2006-04-30 Kristian Rietveld * gtk/gtkfilesystem.[ch] (gtk_file_info_render_icon): remove the caching code, (gtk_file_info_get_icon_name): new function, (gtk_file_system_volume_get_icon_name): new function, (gtk_file_system_volume_render_icon): refactor to use get_icon_name() and render the icon on the fly. * gtk/gtkfilesystemunix.c (gtk_file_system_unix_volume_render_icon), (gtk_file_system_unix_volume_get_icon_name): reflect updates in file system interface, (get_fallback_icon): remove, along with icon caching code. * gtk/gtk.symbols: updated. 2006-04-30 Kristian Rietveld * gtk/gtkfilesystemmodel.c (got_root_folder_cb), (ref_path_cb), (get_children_get_folder_cb): don't leak the handle, (got_root_folder_cb), (get_children_get_folder_cb): emit row-inserted for the newly added nodes. 2006-04-30 Kristian Rietveld * gtk/gtkfilechooserdefault.c (file_list_drag_data_select_uris), (file_list_drag_data_received_get_info_cb), (file_list_drag_data_received_cb): refactor code for selecting multiple uris into file_list_drag_data_select_uris(). 2006-04-23 Kristian Rietveld * gtk/gtkfilechooserbutton.c (dnd_select_folder_get_info_cb): don't leak handle, (change_icon_theme_get_info_cb), (set_info_get_info_cb), (model_add_special_get_info_cb), (update_label_get_info_cb): ditto. * gtk/gtkfilechooserdefault.c (shortcuts_reload_icons_get_info_cb): don't leak the handle, (get_file_info_finished), (edited_idle_create_folder_cb), (file_list_drag_data_received_get_info_cb), (show_and_select_paths_get_folder_cb), (update_current_folder_get_info_cb), (add_shortcut_get_info_cb), (confirmation_confirm_get_info_cb), (action_create_folder_cb), (save_entry_get_info_cb), (shortcuts_activate_volume_mount_cb), (shortcuts_activate_get_info_cb), (update_from_entry_get_info_cb): ditto. * gtk/gtkfilechooserentry.c (load_directory_get_folder_callback): don't leak the handle. * gtk/gtkpathbar.c (set_button_image_get_info_cb), (gtk_path_bar_get_info_callback): don't leak the handle. 2006-04-23 Kristian Rietveld Review. * gtk/gtkfilechooserdefault.c (shortcuts_reload_icons_get_info_cb): don't forget to unref data->impl at the end. 2006-04-23 Kristian Rietveld Review, continued. * gtk/gtkfilechooserdialog.c (response_cb): set response_requested to FALSE after stopping emission of the response signal. 2006-03-16 Kristian Rietveld More review work. * gtk/gtkfilechooserprivate.h: remove idle_finished_loading_source from GtkFileSystemModel. * gtk/gtkfilesystemmodel.c (gtk_file_system_model_finalize): remove idle_finished_loading_source, (idle_finished_loading_cb), (queue_finished_loading): removed, (got_root_folder_cb): save a list walk, immediately emit finished-loading and don't queue it, since we are already in an idle here, always list_children() so the children the folder already has are returned, (_gtk_file_system_model_new): handle the case where NULL is returned by _get_folder(), (_gtk_file_system_model_path_do): remove comment, and append the new handle to the list, don't try to remove, (get_children_get_folder_cb): save a list walk, remove the dummy child if the _get_folder() call fails or is cancelled. 2006-03-14 Kristian Rietveld More suggestions from Federico. * gtk/gtkfilesystemunix.c (gtk_file_system_unix_create_folder): remove check for filename_is_root(), since we never hit that code and else mkdir will fail anyway, (gtk_file_system_unix_create_folder): fixup parent folder refresh code. 2006-03-14 Kristian Rietveld * gtk/gtkfilesystemunix.c (read_hidden_file), (fill_in_hidden), (get_is_hidden_for_file): factor out g_file_get_contents() code in read_hidden_file(). (Federico Mena Quintero). 2006-03-14 Kristian Rietveld Icon name code suggestions by Federico Mena Quintero. * gtk/gtkfilesystemunix.c: add GTK_FILE_INFO_ICON to STAT_NEEDED_MASK, (get_fallback_icon_name), (get_fallback_icon), (get_icon_name_for_directory), (get_special_icon_name): get rid of strdups, (get_icon_type_from_path): add a statbuf argument and use the statbuf when folder_unix is NULL, (create_file_info): adapt to work with above changes. 2006-03-14 Kristian Rietveld * gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_info): path is NULL is an error here (gtk_file_system_get_info() already guards path = NULL), (gtk_file_system_unix_get_info): move basename creation to just before create_file_info(). (Federico Mena Quintero). 2006-03-14 Kristian Rietveld * gtk/gtkfilesystemunix.c (struct _GtkFileFolderUnix): add load_folder_id field, (load_folder): add thread enter/leave construct, set load_folder_id to zero since we have the idle removed when we return, (gtk_file_system_unix_get_folder): initialize load_folder_id to 0 and store the source id of the load_folder idle, (gtk_file_folder_unix_finalize): remove the load_folder idle if necessary. (Federico Mena Quintero). 2006-03-14 Kristian Rietveld * gtk/gtkfilechooser.c (gtk_file_chooser_get_current_folder): return NULL if there is no current folder path. * gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_map): we reload the current folder if there is one, else we continue the still pending load. 2006-03-14 Kristian Rietveld Couple of fixes from Markku Vire. * gtk/gtkfilesystem.c (gtk_file_info_copy): also strdup icon_name and display_key. * gtk/gtkfilesystemunix.c (gtk_file_system_unix_create_folder): initialize error to NULL, (gtk_file_folder_unix_list_children): return an empty list for now if we couldn't read the directory. 2005-12-23 Kristian Rietveld * gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb), (gtk_file_chooser_default_update_current_folder): set and unset busy cursor while checking whether the given path is a folder. 2005-12-23 Kristian Rietveld * gtk/gtkfilesystem.h: change the GtkFileInfo argument of the GetInfoCallback to be const. * gtk/gtkfilechooserbutton.c, gtk/gtkfilechooserdefault.c, gtk/gtkpathbar.c: changes functions to reflect the above change. 2005-12-23 Kristian Rietveld * gtk/gtkfilechooserdefault.c, gtk/gtkfilechooserprivate.h: keep track of handles, cancel all pending operations on dispose. 2005-12-23 Kristian Rietveld * gtk/gtkfilechooserprivate.h (struct _GtkFileSystemModel): add pending_handles field, (struct _FileModelNode): add load_pending flag. * gtk/gtkfilesystemmodel.c (gtk_file_system_model_dispose): introduce, cancel all pending operations here, (got_root_folder_cb), (_gtk_file_system_model_new), (ref_path_cb), (_gtk_file_system_model_path_do): keep track of all pending operations, handle cancelled operations. 2005-12-23 Kristian Rietveld * gtk/gtkfilechooserbutton.c (gtk_file_chooser_button_finalize), (gtk_file_chooser_button_destroy): move all handle cancellations and object unrefs to destroy. * gtk/gtkpathbar.c (gtk_path_bar_finalize), (gtk_path_bar_dispose): likewise. * gtk/gtkfilechooserentry.c (gtk_file_chooser_entry_class_init): add dispose, (gtk_file_chooser_entry_dispose): cancel handles and unrefs objects here instead of finalize. 2005-12-23 Kristian Rietveld * gtk/gtkfilesystem.c (get_cached_icon): check if "name" is an absolute path, if so load the icon from that file. * gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): fix the build. 2005-12-21 Kristian Rietveld * gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_folder): remove the FIXME since it doesn't make sense, when we return a cached folder we won't emit finished-loading either, (gtk_file_system_unix_create_folder): remove unused variable, (gtk_file_folder_unix_list_children): remove unused code, (get_is_hidden_for_file): new function, (create_file_info): also handle getting is_hidden when called without a folder unix (from _system_get_info() for example). 2005-12-20 Kristian Rietveld * gtk/gtkfilechooserdefault.c (check_is_folder): fully removed! woo!, (check_save_entry): add is_folder argument, (gtk_file_chooser_default_get_paths): update check_save_entry() call, (get_display_name_for_folder): removed, (confirmation_confirm_get_info_cb): new function which will handle the confirmation dialog now we have all information for it, (should_respond_after_confirm_overwrite): replace the call to get_display_name_for_folder() with an asynchronous solution, (action_create_folder_cb): request dialog response on successfull folder creation, (gtk_file_chooser_default_should_respond): update call to check_save_entry(); replace the check is folder call for "path" by just using the is_folder return value from check_save_entry(); replaced the check is folder call for "parent_path" with an asynchronous setup, remainder of that work is now done in save_entry_get_info_cb(), (save_entry_get_info_cb): new function. * gtk/gtkfilechoosermebed.[ch]: add response-requested signal. * gtk/gtkfilechooserdialog.c, gtk/gtkfilechooserprivate.h: handle response_requested signal. * gtk/gtkfilechooserentry.[ch] (_gtk_file_chooser_entry_get_is_folder): new function. 2005-12-20 Kristian Rietveld * gtk/gtkfilechooserdefault.c (ref_path_cb): when called with !folder, check if node is the node we are looking for (can be triggered when we call ref_path_cb ourselves after a find_child_node), (_gtk_file_system_model_path_do): introduce parent_node field; after finding a child node in a loaded parent node, don't forget to call ref_path_cb, (get_children_get_folder_cb): don't forget to set data->node->folder to the newly acquired folder. 2005-12-20 Kristian Rietveld * gtk/gtkfilechooserdefault.c (show_and_select_paths_get_folder_cb): handle case where the folder we get already finished loading. * gtk/gtkfilesystemmodel.c (ref_path_cb), (_gtk_file_system_model_path_do): make this work. 2005-12-19 Kristian Rietveld * gtk/gtkfilechooserdefault.c (shortcuts_update_count): modify in such a way that it can also negatively update the count on failures, (get_file_info_finished): handle failures, update save folder combo box on success, (shortcuts_insert_path): change the boolean return value into a void one, also refilter the model and update the save folder combo box for the non-asynchronous case, (shortcuts_append_home), (shortcuts_append_desktop), (shortcuts_add_volumes), (shortcuts_add_current_folder), (add_shortcuts_get_info_cb): adapt to shortcuts_insert_path() updates. 2005-12-19 Kristian Rietveld * gtk/gtkpathbar.[ch]: add handle fields to ButtonData and GtkPathBar; do correct handle bookkeeping. * gtk/gtkfilesystemunix.c (load_folder), (gtk_file_system_unix_get_folder), (gtk_file_folder_unix_is_finished_loading): add is_finished_loading field to GtkFileFolderUnix, which is set to true once we are really finished with loading (previous assumption that we are always finshed loading is not true anymore). * gtk/gtkfilesystemmodel.c (got_root_folder_cb): if the folder is finished loading, list the children and update the root level. * gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb): handle cancellation. 2005-12-16 Kristian Rietveld * gtk/gtkfilesystemunix.c: always call the callback, even when cancelled; ref handles passed to the callback queue functions; don't set cancelled to TRUE in _cancel_operation(), since operations in this backend are always completed, (get_special_icon_name): don't strdup the value of get_icon_name_for_directory() again. * gtk/gtkfilechooserbutton.c: adapt to new cancellation policy; reference all objects which are passed as callback arguments; in the callback check if the handles match. * gtk/gtkfilechooserentry.c: likewise. * gtk/gtkfilechooserdefault.c: likewise. Also changed the shortcut loading code to be more like the code in GtkFileChooserButton, where we store all handles in the model and have model_row_free_data cancel any pending operations, (shortcuts_model_create): copy the error. * gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault): remove loading_volumes and loading_bookmarks fields. * gtk/gtkfilesystem.c (gtk_file_info_free): free icon_name here... 2005-12-13 Kristian Rietveld * gtk/gtkfilechooserdefault.c (edited_idle_create_folder_cb): fix thinko. * gtk/gtkfilesystemunix.c (dispatch_create_folder_callback), (queue_create_folder_callback): need to copy/free the path, (gtk_file_system_unix_create_folder): put the "reget folder" hack back in, though it's working different now. 2005-12-13 Kristian Rietveld * gtk/gtkfilechooserbutton.c (gtk_file_chooser_button_finalize), (dnd_select_folder_get_info_cb), (gtk_file_chooser_drag_data_received), (change_icon_theme_get_info_cb), (change_icon_theme), (model_add_special_get_info_cb), (model_add_special), (update_label_get_info_cb), (update_label_and_image): cancel existing operations, if any; added apprioriate fields to GtkFileChooserButtonPrivate. 2005-12-13 Kristian Rietveld * gtk/gtkfilechooserentry.c (gtk_file_chooser_entry_finalize): if there's a folder loading, cancel the operation, (load_directory_get_folder_callback): set the loading folder handle to NULL, (load_directory_callback): cancel any currently loading folders before starting a new get folder operation. 2005-12-13 Kristian Rietveld * gtk/gtkfilechooserdefault.c (shortcuts_insert_path): don't overwrite data if it's already set (for example by the "is volume" case). 2005-12-13 Kristian Rietveld * gtk/gtkfilechooserbutton.c (set_info_get_info_cb), (set_info_for_path_at_iter): store a row reference in the temporary data structure and not an iter, (model_add_special), (model_update_current_folder), (gtk_file_chooser_button_add_shorcut_folder): remove unused pixbuf variable. 2005-12-13 Kristian Rietveld * gtk/gtkfilechooserdefault.c (get_file_info_finished), (shortcuts_insert_path): replace gtk_file_system_render_icon() call with gtk_file_system_get_file_info(), (gtk_file_chooser_default_add_shortcut_folder), (gtk_file_chooser_default_remove_shortcut_folder): handle shortcuts which are still loading. * gtk/gtkfilechooserprivate.h: add shortcuts_loading field to struct _GtkFileChooserDefault. * gtk/gtkfilechooserbutton.c (set_info_get_info_cb), (set_info_for_path_at_iter), (model_free_row_data): keep handle and path together; now supports adding/removing shortcuts which are still loading. 2005-12-13 Kristian Rietveld * gtk/gtkfilesystem.c: make the cancelled field an GObject property. 2005-12-13 Kristian Rietveld * gtk/gtkfilesystem.h: make the GError argument in the callbacks const. * gtk/gtkfilechooserbutton.c: update callbacks, * gtk/gtkfilechooserentry.c: likewise, * gtk/gtkfilechooserdefault.c: likewise, * gtk/gtkfilesystemmodel.c: likewise, * gtk/gtkpathbar.c: likewise. * gtk/gtkfilechooserdefault.c (edited_idle_create_folder_cb): copy the error which will be passed to error_creating_folder_dialog(), (action_create_folder_cb): likewise, (file_list_drag_data_received_get_info_cb): add forgotten GError declaration. 2005-12-13 Kristian Rietveld * gtk/gtkpathbar.c (get_button_image), (set_button_image), (set_button_image_get_info_cb), (gtk_path_bar_update_button_appearance): update to new icon rendering call. 2005-12-09 Kristian Rietveld * gtk/gtkfilechooserdefault.c (file_list_drag_data_received), (gtk_file_chooser_default_add_shortcut_folder), (shortcuts_activate_get_info_cb): replace synchronous check_is_folder calls with an async gtk_file_system_get_info() solution. 2005-12-09 Kristian Rietveld * gtk/gtkfilesystem.c (icon_cache_element_free), (icon_theme_changed), (get_cached_icon), (gtk_file_info_render_icon): implement pixbuf caching as found in the file system backends. 2005-12-09 Kristian Rietveld * gtk/gtk.symbols: updated. * gtk/gtkfilesystem.[ch] (struct GtkFileInfo): added icon_name field, (enum GtkFileInfoType): added GTK_FILE_INFO_ICON, (gtk_file_info_set_icon_name): new function, (gtk_file_info_render_icon): new function, (gtk_file_system_render_icon): removed. * gtk/gtkfilesystemunix.c (gtk_file_system_unix_render_icon): removed, (create_file_info): fill icon_name field if required, (get_*_icon): modified to suit create_file_info() better. * gtk/gtkfilechooserbutton.c: modified to use gtk_file_info_render_icon() instead of gtk_file_system_render_icon(). * gtk/gtkfilechooserdefault.c: likewise. 2005-12-06 Kristian Rietveld * gtk/gtkfilechooserdefault.c (get_file_info_finished), (update_current_folder_get_info_cb): fix mem leaks. * gtk/gtkfilesystemunix.c (gtk_file_system_unix_get_info): ditto. * gtk/gtkpathbar.c (gtk_path_bar_set_path_finish): ditto. 2005-12-06 Kristian Rietveld * gtk/gtkfilechooserbutton.c (dnd_select_folder_get_info_cb), (gtk_file_chooser_button_drag_data_received): make asynchronous, (update_label_and_image): remove unused variable. * gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_update_current_folder): split in two functions, so we can have the is_folder check back. * gtk/gtkfilechooserprivate.h: add update_current_folder_handle field. 2005-12-06 Kristian Rietveld * gtk/gtkfilechooserdefault.c (show_and_select_paths): fixed a typo. 2005-12-05 Federico Mena Quintero (merge from HEAD) * gtk/gtkfilechooserdefault.c (trap_activate_cb): "event->state & modifiers", not "event->state && modifiers". Patch by Sadrul Habib Chowdhury . Fixes bug #323073. 2005-12-06 Kristian Rietveld Beginnings of an asynchronous file chooser. * gtk/gtkfilechooserbutton.c: display name and the is folder property are now asynchronously set using set_info_for_at_path_iter(), the is folder property is now also stored in the tree model. * gtk/gtkfilechooserdefault.c: lots of changes to the shortcuts model code to make it operate asynchronously, check_is_folder() has been "disabled" for now, all other synchronous calls were replaced with asychronous ones. * gtk/gtkfilechooserentry.c: update call to gtk_file_system_get_folder(). * gtk/gtkfilechooserprivate.h: added two fields. * gtk/gtkfilesystem.[ch]: for about 85% changed to the changes outlined in the proposal discussed on gtk-devel-list. * gtk/gtkfilesystemmodel.[ch]: updated all asynchronous calls, _gtk_file_system_model_path_do() basically had to be rewritten (and I still need to finish that). * gtk/gtkfilesystemunix.c: changed to be compatible with the new GtkFileSystem interface. * gtk/gtkpathbar.c (button_clicked_cb): block/unblock the button_clicked_cb callback around the call to gtk_toggle_button_set_active(), avoids button_clicked_cb getting called twice. (_gtk_path_bar_set_path): refactored to be asynchronous.