summaryrefslogtreecommitdiff
path: root/src/nautilus-files-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nautilus-files-view.c')
-rw-r--r--src/nautilus-files-view.c37
1 files changed, 27 insertions, 10 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index b09883e55..8bfab06be 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -302,6 +302,12 @@ typedef struct
NautilusDirectory *directory;
} FileAndDirectory;
+typedef struct
+{
+ NautilusFilesView *view;
+ GList *selection;
+} CompressCallbackData;
+
/* forward declarations */
static gboolean display_selection_info_idle_callback (gpointer data);
@@ -2236,9 +2242,9 @@ static void
compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *controller,
gpointer user_data)
{
+ CompressCallbackData *callback_data = user_data;
NautilusFilesView *view;
g_autofree gchar *name = NULL;
- GList *selection;
GList *source_files = NULL;
GList *l;
CompressData *data;
@@ -2249,12 +2255,10 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c
AutoarFormat format;
AutoarFilter filter;
- view = NAUTILUS_FILES_VIEW (user_data);
+ view = NAUTILUS_FILES_VIEW (callback_data->view);
priv = nautilus_files_view_get_instance_private (view);
- selection = nautilus_files_view_get_selection_for_file_transfer (view);
-
- for (l = selection; l != NULL; l = l->next)
+ for (l = callback_data->selection; l != NULL; l = l->next)
{
source_files = g_list_prepend (source_files,
nautilus_file_get_location (l->data));
@@ -2323,7 +2327,6 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c
compress_done,
data);
- nautilus_file_list_free (selection);
g_list_free_full (source_files, g_object_unref);
g_clear_object (&priv->compress_controller);
}
@@ -2341,6 +2344,12 @@ compress_dialog_controller_on_cancelled (NautilusNewFolderDialogController *cont
g_clear_object (&priv->compress_controller);
}
+static void
+compress_callback_data_free (CompressCallbackData *data)
+{
+ nautilus_file_list_free (data->selection);
+ g_free (data);
+}
static void
nautilus_files_view_compress_dialog_new (NautilusFilesView *view)
@@ -2349,6 +2358,7 @@ nautilus_files_view_compress_dialog_new (NautilusFilesView *view)
NautilusFilesViewPrivate *priv;
g_autolist (NautilusFile) selection = NULL;
g_autofree char *common_prefix = NULL;
+ CompressCallbackData *data;
priv = nautilus_files_view_get_instance_private (view);
@@ -2386,10 +2396,17 @@ nautilus_files_view_compress_dialog_new (NautilusFilesView *view)
containing_directory,
common_prefix);
- g_signal_connect (priv->compress_controller,
- "name-accepted",
- (GCallback) compress_dialog_controller_on_name_accepted,
- view);
+ data = g_new0 (CompressCallbackData, 1);
+ data->view = view;
+ data->selection = nautilus_files_view_get_selection_for_file_transfer (view);
+
+ g_signal_connect_data (priv->compress_controller,
+ "name-accepted",
+ (GCallback) compress_dialog_controller_on_name_accepted,
+ data,
+ (GClosureNotify) compress_callback_data_free,
+ G_CONNECT_AFTER);
+
g_signal_connect (priv->compress_controller,
"cancelled",
(GCallback) compress_dialog_controller_on_cancelled,