From 75984fc181c573f2a87da8d3791374855997464e Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Tue, 13 Dec 2005 16:35:56 +0000 Subject: [PATCH] if there's a folder loading, cancel the operation, 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. --- ChangeLog | 9 +++++++++ ChangeLog.pre-2-10 | 9 +++++++++ gtk/gtkfilechooserentry.c | 23 ++++++++++++++++++----- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index cd04801d02..2864e66773 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +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 diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index cd04801d02..2864e66773 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,12 @@ +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 diff --git a/gtk/gtkfilechooserentry.c b/gtk/gtkfilechooserentry.c index 9a51f12e67..8102513a0f 100644 --- a/gtk/gtkfilechooserentry.c +++ b/gtk/gtkfilechooserentry.c @@ -55,6 +55,7 @@ struct _GtkFileChooserEntry GSource *load_directory_idle; GtkFileFolder *current_folder; + GtkFileSystemHandle *load_folder_handle; GtkListStore *completion_store; @@ -212,6 +213,12 @@ gtk_file_chooser_entry_finalize (GObject *object) if (chooser_entry->completion_store) g_object_unref (chooser_entry->completion_store); + if (chooser_entry->load_folder_handle) + { + gtk_file_system_cancel_operation (chooser_entry->load_folder_handle); + chooser_entry->load_folder_handle = NULL; + } + if (chooser_entry->current_folder) { g_signal_handlers_disconnect_by_func (chooser_entry->current_folder, @@ -607,6 +614,8 @@ load_directory_get_folder_callback (GtkFileSystemHandle *handle, { GtkFileChooserEntry *chooser_entry = data; + chooser_entry->load_folder_handle = NULL; + if (error) /* There is no folder by that name */ return; @@ -647,11 +656,15 @@ load_directory_callback (GtkFileChooserEntry *chooser_entry) g_assert (chooser_entry->completion_store == NULL); /* Load the folder */ - gtk_file_system_get_folder (chooser_entry->file_system, - chooser_entry->current_folder_path, - GTK_FILE_INFO_DISPLAY_NAME | GTK_FILE_INFO_IS_FOLDER, - load_directory_get_folder_callback, - chooser_entry); + if (chooser_entry->load_folder_handle) + gtk_file_system_cancel_operation (chooser_entry->load_folder_handle); + + chooser_entry->load_folder_handle = + gtk_file_system_get_folder (chooser_entry->file_system, + chooser_entry->current_folder_path, + GTK_FILE_INFO_DISPLAY_NAME | GTK_FILE_INFO_IS_FOLDER, + load_directory_get_folder_callback, + chooser_entry); done: