summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Wehner <martin.wehner@gmail.com>2005-12-10 17:38:35 +0000
committerMartin Wehner <mwehner@src.gnome.org>2005-12-10 17:38:35 +0000
commit439831fee0d6ba08dd01951110a5bc78e96ce96f (patch)
tree210f7663947200183e909fbcbb04c4b31c547a36
parentcb1d2457669bc2586ac0af73632e9e316fe54460 (diff)
downloadnautilus-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--ChangeLog9
-rw-r--r--src/file-manager/fm-directory-view.c6
2 files changed, 15 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ff39f24e7..06cb9e81a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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),