diff options
author | Martin Wehner <martin.wehner@gmail.com> | 2005-12-10 17:38:35 +0000 |
---|---|---|
committer | Martin Wehner <mwehner@src.gnome.org> | 2005-12-10 17:38:35 +0000 |
commit | 439831fee0d6ba08dd01951110a5bc78e96ce96f (patch) | |
tree | 210f7663947200183e909fbcbb04c4b31c547a36 | |
parent | cb1d2457669bc2586ac0af73632e9e316fe54460 (diff) | |
download | nautilus-439831fee0d6ba08dd01951110a5bc78e96ce96f.tar.gz |
Keep the original action refed till its activation callback is done.
2005-12-10 Martin Wehner <martin.wehner@gmail.com>
* src/file-manager/fm-directory-view.c:
(extension_action_slow_mime_types_ready_callback),
(extension_action_callback), (add_extension_action_for_files):
Keep the original action refed till its activation callback is
done. Prevents the callback data from being freed prematurely.
Fixes #320230.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | src/file-manager/fm-directory-view.c | 6 |
2 files changed, 15 insertions, 0 deletions
@@ -1,3 +1,12 @@ +2005-12-10 Martin Wehner <martin.wehner@gmail.com> + + * src/file-manager/fm-directory-view.c: + (extension_action_slow_mime_types_ready_callback), + (extension_action_callback), (add_extension_action_for_files): + Keep the original action refed till its activation callback is + done. Prevents the callback data from being freed prematurely. + Fixes #320230. + 2005-11-28 Alexander Larsson <alexl@redhat.com> * configure.in: diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c index 7f864f2a2..4b3b2a347 100644 --- a/src/file-manager/fm-directory-view.c +++ b/src/file-manager/fm-directory-view.c @@ -4295,6 +4295,7 @@ typedef struct NautilusMenuItem *item; FMDirectoryView *view; GList *selection; + GtkAction *action; } ExtensionActionCallbackData; @@ -4349,6 +4350,8 @@ extension_action_slow_mime_types_ready_callback (GList *selection, if (is_valid) { nautilus_menu_item_activate (data->item); } + + g_object_unref (data->action); } static void @@ -4359,6 +4362,8 @@ extension_action_callback (GtkAction *action, data = callback_data; + g_object_ref (action); + nautilus_file_list_call_when_ready (data->selection, NAUTILUS_FILE_ATTRIBUTE_SLOW_MIME_TYPE, @@ -4411,6 +4416,7 @@ add_extension_action_for_files (FMDirectoryView *view, data->item = g_object_ref (item); data->view = view; data->selection = nautilus_file_list_copy (files); + data->action = action; g_signal_connect_data (action, "activate", G_CALLBACK (extension_action_callback), |