summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Fazakas <alex.fazakas97@yahoo.com>2018-02-21 00:14:45 +0200
committerAlexandru Fazakas <alex.fazakas97@yahoo.com>2018-02-27 07:06:57 +0200
commit5da4acab69b5b5ae63eb409b52d624e4f56d17e8 (patch)
tree3211936e7fdbd4f45e23434098534e7a8728ca10
parent7e7eac3a95ac81594a2d0e0e975cc78b167c62b5 (diff)
downloadnautilus-5da4acab69b5b5ae63eb409b52d624e4f56d17e8.tar.gz
files-view: Avoid leaking selection list and data
Sometimes, while working with the files_view_get_selection function, the freeing is not done properly. We leak a lot of objects as of this and we need a way to fix it. To avoid leaking, we implemented g_autoptr support for NautilusFile in order to have at our disposal automatic, deep cleanup whenever we use the function. In this patch, we changed all calls to use g_autolist appropriately and bumped the glib dependency up to 2.55.1 (in order for us to use g_autolist). Fixes https://gitlab.gnome.org/GNOME/nautilus/issues/226
-rw-r--r--meson.build2
-rw-r--r--src/nautilus-canvas-view.c8
-rw-r--r--src/nautilus-files-view.c122
-rw-r--r--src/nautilus-list-view.c7
-rw-r--r--src/nautilus-trash-bar.c13
-rw-r--r--src/nautilus-view-icon-controller.c8
-rw-r--r--src/nautilus-window-slot.c21
7 files changed, 66 insertions, 115 deletions
diff --git a/meson.build b/meson.build
index 3b5c8dbff..1c6976797 100644
--- a/meson.build
+++ b/meson.build
@@ -28,7 +28,7 @@ pkgconfig = import('pkgconfig')
#
# Dependencies
-glib_ver = '>= 2.51.2'
+glib_ver = '>= 2.55.1'
libgd = subproject(
'libgd',
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c
index 161206768..f99ddd9a6 100644
--- a/src/nautilus-canvas-view.c
+++ b/src/nautilus-canvas-view.c
@@ -915,7 +915,7 @@ nautilus_canvas_view_select_first (NautilusFilesView *view)
static void
nautilus_canvas_view_reveal_selection (NautilusFilesView *view)
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
g_return_if_fail (NAUTILUS_IS_CANVAS_VIEW (view));
@@ -930,8 +930,6 @@ nautilus_canvas_view_reveal_selection (NautilusFilesView *view)
(get_canvas_container (NAUTILUS_CANVAS_VIEW (view)),
selection->data);
}
-
- nautilus_file_list_free (selection);
}
static GdkRectangle *
@@ -962,7 +960,7 @@ get_rectangle_for_data (NautilusFilesView *view,
static GdkRectangle *
nautilus_canvas_view_compute_rename_popover_pointing_to (NautilusFilesView *view)
{
- g_autoptr (GList) selection = NULL;
+ g_autolist (NautilusFile) selection = NULL;
NautilusCanvasIconData *data;
g_return_val_if_fail (NAUTILUS_IS_CANVAS_VIEW (view), NULL);
@@ -979,7 +977,7 @@ nautilus_canvas_view_compute_rename_popover_pointing_to (NautilusFilesView *view
static GdkRectangle *
nautilus_canvas_view_reveal_for_selection_context_menu (NautilusFilesView *view)
{
- g_autoptr (GList) selection = NULL;
+ g_autolist (NautilusFile) selection = NULL;
NautilusCanvasContainer *container;
NautilusCanvasIconData *data;
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index a7fc8f35e..c677be771 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -906,7 +906,7 @@ nautilus_files_view_scroll_to_file (NautilusFilesView *view,
* Get a list of NautilusFile pointers that represents the
* currently-selected items in this view. Subclasses must override
* the signal handler for the 'get_selection' signal. Callers are
- * responsible for g_free-ing the list (but not its data).
+ * responsible for g_free-ing the list (and unrefing its data).
* @view: NautilusFilesView whose selected items are of interest.
*
* Return value: GList of NautilusFile pointers representing the selection.
@@ -1177,14 +1177,13 @@ nautilus_files_view_preview_files (NautilusFilesView *view,
void
nautilus_files_view_activate_selection (NautilusFilesView *view)
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
nautilus_files_view_activate_files (view,
selection,
0,
TRUE);
- nautilus_file_list_free (selection);
}
void
@@ -1267,7 +1266,7 @@ action_open_file_and_close_window (GSimpleAction *action,
GVariant *state,
gpointer user_data)
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
NautilusFilesView *view;
view = NAUTILUS_FILES_VIEW (user_data);
@@ -1277,7 +1276,6 @@ action_open_file_and_close_window (GSimpleAction *action,
selection,
NAUTILUS_WINDOW_OPEN_FLAG_CLOSE_BEHIND,
TRUE);
- nautilus_file_list_free (selection);
}
static void
@@ -1326,7 +1324,7 @@ action_open_item_location (GSimpleAction *action,
gpointer user_data)
{
NautilusFilesView *view;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
NautilusFile *item;
GFile *activation_location;
NautilusFile *activation_file;
@@ -1363,7 +1361,6 @@ action_open_item_location (GSimpleAction *action,
nautilus_file_unref (parent);
nautilus_file_unref (activation_file);
g_object_unref (activation_location);
- nautilus_file_list_free (selection);
}
static void
@@ -1372,7 +1369,7 @@ action_open_item_new_tab (GSimpleAction *action,
gpointer user_data)
{
NautilusFilesView *view;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
GtkWindow *window;
view = NAUTILUS_FILES_VIEW (user_data);
@@ -1388,8 +1385,6 @@ action_open_item_new_tab (GSimpleAction *action,
NAUTILUS_WINDOW_OPEN_FLAG_DONT_MAKE_ACTIVE,
FALSE);
}
-
- nautilus_file_list_free (selection);
}
static void
@@ -1452,12 +1447,12 @@ choose_program (NautilusFilesView *view,
static void
open_with_other_program (NautilusFilesView *view)
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
g_assert (NAUTILUS_IS_FILES_VIEW (view));
selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
- choose_program (view, selection);
+ choose_program (view, g_steal_pointer (&selection));
}
static void
@@ -1474,8 +1469,6 @@ static void
trash_or_delete_selected_files (NautilusFilesView *view)
{
NautilusFilesViewPrivate *priv;
- GList *selection;
-
priv = nautilus_files_view_get_instance_private (view);
/* This might be rapidly called multiple times for the same selection
@@ -1484,11 +1477,11 @@ trash_or_delete_selected_files (NautilusFilesView *view)
*/
if (!priv->selection_was_removed)
{
+ g_autolist (NautilusFile) selection = NULL;
selection = nautilus_files_view_get_selection_for_file_transfer (view);
trash_or_delete_files (nautilus_files_view_get_containing_window (view),
selection,
view);
- nautilus_file_list_free (selection);
priv->selection_was_removed = TRUE;
}
}
@@ -1553,7 +1546,7 @@ action_star (GSimpleAction *action,
gpointer user_data)
{
NautilusFilesView *view;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
NautilusFilesViewPrivate *priv;
view = NAUTILUS_FILES_VIEW (user_data);
@@ -1573,7 +1566,7 @@ action_unstar (GSimpleAction *action,
gpointer user_data)
{
NautilusFilesView *view;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
NautilusFilesViewPrivate *priv;
view = NAUTILUS_FILES_VIEW (user_data);
@@ -2047,10 +2040,9 @@ nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view,
if (with_selection)
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
common_prefix = nautilus_get_common_filename_prefix (selection, MIN_COMMON_FILENAME_PREFIX_LENGTH);
- nautilus_file_list_free (selection);
}
priv->new_folder_controller =
@@ -2244,7 +2236,7 @@ nautilus_files_view_compress_dialog_new (NautilusFilesView *view)
{
NautilusDirectory *containing_directory;
NautilusFilesViewPrivate *priv;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
g_autofree char *common_prefix = NULL;
priv = nautilus_files_view_get_instance_private (view);
@@ -2291,8 +2283,6 @@ nautilus_files_view_compress_dialog_new (NautilusFilesView *view)
"cancelled",
(GCallback) compress_dialog_controller_on_cancelled,
view);
-
- nautilus_file_list_free (selection);
}
static void
@@ -2413,7 +2403,7 @@ action_properties (GSimpleAction *action,
{
NautilusFilesView *view;
NautilusFilesViewPrivate *priv;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
GList *files;
g_assert (NAUTILUS_IS_FILES_VIEW (user_data));
@@ -2436,7 +2426,6 @@ action_properties (GSimpleAction *action,
{
nautilus_properties_window_present (selection, GTK_WIDGET (view), NULL);
}
- nautilus_file_list_free (selection);
}
static void
@@ -3207,7 +3196,7 @@ nautilus_files_view_finalize (GObject *object)
void
nautilus_files_view_display_selection_info (NautilusFilesView *view)
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
goffset non_folder_size;
gboolean non_folder_size_known;
guint non_folder_count, folder_count, folder_item_count;
@@ -3270,8 +3259,6 @@ nautilus_files_view_display_selection_info (NautilusFilesView *view)
}
}
- nautilus_file_list_free (selection);
-
/* Break out cases for localization's sake. But note that there are still pieces
* being assembled in a particular order, which may be a problem for some localizers.
*/
@@ -3518,7 +3505,7 @@ done_loading (NautilusFilesView *view,
{
NautilusFilesViewPrivate *priv;
GList *pending_selection;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
gboolean do_reveal = FALSE;
priv = nautilus_files_view_get_instance_private (view);
@@ -3555,11 +3542,6 @@ done_loading (NautilusFilesView *view,
do_reveal = TRUE;
}
- if (selection)
- {
- g_list_free_full (selection, g_object_unref);
- }
-
if (pending_selection)
{
g_list_free_full (pending_selection, g_object_unref);
@@ -4051,7 +4033,7 @@ process_old_files (NautilusFilesView *view)
NautilusFilesViewPrivate *priv;
GList *files_added, *files_changed, *node;
FileAndDirectory *pending;
- GList *selection, *files;
+ GList *files;
g_autoptr (GList) pending_additions = NULL;
priv = nautilus_files_view_get_instance_private (view);
@@ -4112,12 +4094,12 @@ process_old_files (NautilusFilesView *view)
if (files_changed != NULL)
{
+ g_autolist (NautilusFile) selection = NULL;
selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
files = file_and_directory_list_to_files (files_changed);
send_selection_change = eel_g_lists_sort_and_check_for_intersection
(&files, &selection);
nautilus_file_list_free (files);
- nautilus_file_list_free (selection);
}
file_and_directory_list_free (priv->old_added_files);
@@ -4142,7 +4124,7 @@ static void
display_pending_files (NautilusFilesView *view)
{
NautilusFilesViewPrivate *priv;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
process_new_files (view);
process_old_files (view);
@@ -4163,8 +4145,6 @@ display_pending_files (NautilusFilesView *view)
{
done_loading (view, TRUE);
}
-
- nautilus_file_list_free (selection);
}
static gboolean
@@ -4759,7 +4739,7 @@ get_extension_selection_menu_items (NautilusFilesView *view)
GList *items;
GList *providers;
GList *l;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
window = nautilus_files_view_get_window (view);
selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
@@ -4779,7 +4759,6 @@ get_extension_selection_menu_items (NautilusFilesView *view)
}
nautilus_module_extension_list_free (providers);
- nautilus_file_list_free (selection);
return items;
}
@@ -5168,7 +5147,7 @@ run_script (GSimpleAction *action,
NautilusFilesViewPrivate *priv;
ScriptLaunchParameters *launch_parameters;
GdkScreen *screen;
- GList *selected_files;
+ g_autolist (NautilusFile) selection = NULL;
char *file_uri;
char *local_file_path;
char *quoted_path;
@@ -5188,10 +5167,10 @@ run_script (GSimpleAction *action,
old_working_dir = change_to_view_directory (launch_parameters->directory_view);
- selected_files = nautilus_view_get_selection (NAUTILUS_VIEW (launch_parameters->directory_view));
- set_script_environment_variables (launch_parameters->directory_view, selected_files);
+ selection = nautilus_view_get_selection (NAUTILUS_VIEW (launch_parameters->directory_view));
+ set_script_environment_variables (launch_parameters->directory_view, selection);
- parameters = get_file_names_as_parameter_array (selected_files,
+ parameters = get_file_names_as_parameter_array (selection,
priv->model);
screen = gtk_widget_get_screen (GTK_WIDGET (launch_parameters->directory_view));
@@ -5203,7 +5182,6 @@ run_script (GSimpleAction *action,
(const char * const *) parameters);
g_strfreev (parameters);
- nautilus_file_list_free (selected_files);
unset_script_environment_variables ();
g_chdir (old_working_dir);
g_free (old_working_dir);
@@ -6092,14 +6070,13 @@ action_paste_files_into (GSimpleAction *action,
gpointer user_data)
{
NautilusFilesView *view;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
view = NAUTILUS_FILES_VIEW (user_data);
selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
if (selection != NULL)
{
paste_into (view, NAUTILUS_FILE (selection->data));
- nautilus_file_list_free (selection);
}
}
@@ -6107,7 +6084,7 @@ static void
real_action_rename (NautilusFilesView *view)
{
NautilusFile *file;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
GtkWidget *dialog;
g_assert (NAUTILUS_IS_FILES_VIEW (view));
@@ -6141,8 +6118,6 @@ real_action_rename (NautilusFilesView *view)
nautilus_files_view_rename_file_popover_new (view, file);
}
}
-
- nautilus_file_list_free (selection);
}
static void
@@ -6396,7 +6371,7 @@ action_extract_here (GSimpleAction *action,
gpointer user_data)
{
NautilusFilesView *view;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
g_autoptr (GFile) location = NULL;
g_autoptr (GFile) parent = NULL;
@@ -6411,8 +6386,6 @@ action_extract_here (GSimpleAction *action,
parent = g_file_get_parent (location);
extract_files (view, selection, parent);
-
- nautilus_file_list_free (selection);
}
static void
@@ -6421,15 +6394,13 @@ action_extract_to (GSimpleAction *action,
gpointer user_data)
{
NautilusFilesView *view;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
view = NAUTILUS_FILES_VIEW (user_data);
selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
extract_files_to_chosen_location (view, selection);
-
- nautilus_file_list_free (selection);
}
static void
@@ -6518,7 +6489,7 @@ action_set_as_wallpaper (GSimpleAction *action,
GVariant *state,
gpointer user_data)
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
/* Copy the item to Pictures/Wallpaper (internationalized) since it may be
* remote. Then set it as the current wallpaper. */
@@ -6553,8 +6524,6 @@ action_set_as_wallpaper (GSimpleAction *action,
g_free (target_uri);
g_list_free_full (uris, g_free);
}
-
- nautilus_file_list_free (selection);
}
static void
@@ -6698,7 +6667,8 @@ action_unmount_volume (GSimpleAction *action,
gpointer user_data)
{
NautilusFile *file;
- GList *selection, *l;
+ g_autolist (NautilusFile) selection = NULL;
+ GList *l;
NautilusFilesView *view;
view = NAUTILUS_FILES_VIEW (user_data);
@@ -6717,7 +6687,6 @@ action_unmount_volume (GSimpleAction *action,
g_object_unref (mount_op);
}
}
- nautilus_file_list_free (selection);
}
static void
@@ -6726,7 +6695,8 @@ action_eject_volume (GSimpleAction *action,
gpointer user_data)
{
NautilusFile *file;
- GList *selection, *l;
+ g_autolist (NautilusFile) selection = NULL;
+ GList *l;
NautilusFilesView *view;
view = NAUTILUS_FILES_VIEW (user_data);
@@ -6745,7 +6715,6 @@ action_eject_volume (GSimpleAction *action,
g_object_unref (mount_op);
}
}
- nautilus_file_list_free (selection);
}
static void
@@ -6782,7 +6751,8 @@ action_start_volume (GSimpleAction *action,
gpointer user_data)
{
NautilusFile *file;
- GList *selection, *l;
+ g_autolist (NautilusFile) selection = NULL;
+ GList *l;
NautilusFilesView *view;
GMountOperation *mount_op;
@@ -6801,7 +6771,6 @@ action_start_volume (GSimpleAction *action,
g_object_unref (mount_op);
}
}
- nautilus_file_list_free (selection);
}
static void
@@ -6810,7 +6779,8 @@ action_stop_volume (GSimpleAction *action,
gpointer user_data)
{
NautilusFile *file;
- GList *selection, *l;
+ g_autolist (NautilusFile) selection = NULL;
+ GList *l;
NautilusFilesView *view;
view = NAUTILUS_FILES_VIEW (user_data);
@@ -6829,7 +6799,6 @@ action_stop_volume (GSimpleAction *action,
g_object_unref (mount_op);
}
}
- nautilus_file_list_free (selection);
}
static void
@@ -6838,7 +6807,8 @@ action_detect_media (GSimpleAction *action,
gpointer user_data)
{
NautilusFile *file;
- GList *selection, *l;
+ g_autolist (NautilusFile) selection = NULL;
+ GList *l;
NautilusView *view;
view = NAUTILUS_VIEW (user_data);
@@ -6853,7 +6823,6 @@ action_detect_media (GSimpleAction *action,
nautilus_file_poll_for_media (file);
}
}
- nautilus_file_list_free (selection);
}
const GActionEntry view_entries[] =
@@ -7266,7 +7235,8 @@ static void
real_update_actions_state (NautilusFilesView *view)
{
NautilusFilesViewPrivate *priv;
- GList *selection, *l;
+ g_autolist (NautilusFile) selection = NULL;
+ GList *l;
NautilusFile *file;
gint selection_count;
gboolean zoom_level_is_default;
@@ -7678,8 +7648,6 @@ real_update_actions_state (NautilusFilesView *view)
action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
"unstar");
g_simple_action_set_enabled (G_SIMPLE_ACTION (action), show_unstar);
-
- nautilus_file_list_free (selection);
}
/* Convenience function to be called when updating menus,
@@ -7699,7 +7667,8 @@ static void
update_selection_menu (NautilusFilesView *view)
{
NautilusFilesViewPrivate *priv;
- GList *selection, *l;
+ g_autolist (NautilusFile) selection = NULL;
+ GList *l;
NautilusFile *file;
gint selection_count;
gboolean show_app;
@@ -7944,8 +7913,6 @@ update_selection_menu (NautilusFilesView *view)
g_object_unref (menu_item);
}
- nautilus_file_list_free (selection);
-
update_scripts_menu (view);
}
@@ -8167,7 +8134,7 @@ nautilus_files_view_pop_up_background_context_menu (NautilusFilesView *view,
static gboolean
popup_menu_callback (NautilusFilesView *view)
{
- g_autoptr (GList) selection = NULL;
+ g_autolist (NautilusFile) selection = NULL;
selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
@@ -8278,7 +8245,7 @@ nautilus_files_view_notify_selection_changed (NautilusFilesView *view)
{
NautilusFilesViewPrivate *priv;
GtkWindow *window;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
g_return_if_fail (NAUTILUS_IS_FILES_VIEW (view));
@@ -8287,7 +8254,6 @@ nautilus_files_view_notify_selection_changed (NautilusFilesView *view)
selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
window = nautilus_files_view_get_containing_window (view);
DEBUG_FILES (selection, "Selection changed in window %p", window);
- nautilus_file_list_free (selection);
priv->selection_was_removed = FALSE;
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index 166bd67c4..2cc37e838 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -1090,7 +1090,7 @@ test_expand_row_callback (GtkTreeView *tree_view,
static void
nautilus_list_view_reveal_selection (NautilusFilesView *view)
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
g_return_if_fail (NAUTILUS_IS_LIST_VIEW (view));
@@ -1115,8 +1115,6 @@ nautilus_list_view_reveal_selection (NautilusFilesView *view)
gtk_tree_path_free (path);
}
}
-
- nautilus_file_list_free (selection);
}
static gboolean
@@ -1941,7 +1939,7 @@ on_longpress_gesture_pressed_event (GtkGestureLongPress *gesture,
GdkEventSequence *event_sequence;
const GdkEvent *event;
NautilusListView *view = user_data;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
event_sequence = gtk_gesture_get_last_updated_sequence (GTK_GESTURE (gesture));
if (event_sequence == NULL)
@@ -1960,7 +1958,6 @@ on_longpress_gesture_pressed_event (GtkGestureLongPress *gesture,
{
nautilus_files_view_pop_up_background_context_menu (NAUTILUS_FILES_VIEW (view), event);
}
- nautilus_file_list_free (selection);
}
static void
diff --git a/src/nautilus-trash-bar.c b/src/nautilus-trash-bar.c
index 798a0234b..1256963a4 100644
--- a/src/nautilus-trash-bar.c
+++ b/src/nautilus-trash-bar.c
@@ -57,7 +57,7 @@ static void
selection_changed_cb (NautilusFilesView *view,
NautilusTrashBar *bar)
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
int count;
selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
@@ -66,8 +66,6 @@ selection_changed_cb (NautilusFilesView *view,
gtk_info_bar_set_response_sensitive (GTK_INFO_BAR (bar),
TRASH_BAR_RESPONSE_RESTORE,
(count > 0));
-
- nautilus_file_list_free (selection);
}
static void
@@ -162,8 +160,7 @@ trash_bar_response_cb (GtkInfoBar *infobar,
{
NautilusTrashBar *bar;
GtkWidget *window;
- GList *files;
-
+
bar = NAUTILUS_TRASH_BAR (infobar);
window = gtk_widget_get_toplevel (GTK_WIDGET (bar));
@@ -177,9 +174,9 @@ trash_bar_response_cb (GtkInfoBar *infobar,
case TRASH_BAR_RESPONSE_RESTORE:
{
- files = nautilus_view_get_selection (NAUTILUS_VIEW (bar->view));
- nautilus_restore_files_from_trash (files, GTK_WINDOW (window));
- nautilus_file_list_free (files);
+ g_autolist (NautilusFile) selection = NULL;
+ selection = nautilus_view_get_selection (NAUTILUS_VIEW (bar->view));
+ nautilus_restore_files_from_trash (selection, GTK_WINDOW (window));
}
break;
diff --git a/src/nautilus-view-icon-controller.c b/src/nautilus-view-icon-controller.c
index 322537b4f..16bd4155c 100644
--- a/src/nautilus-view-icon-controller.c
+++ b/src/nautilus-view-icon-controller.c
@@ -390,7 +390,7 @@ real_select_all (NautilusFilesView *files_view)
static GtkWidget *
get_first_selected_item_ui (NautilusViewIconController *self)
{
- g_autoptr (GList) selection = NULL;
+ g_autolist (NautilusFile) selection = NULL;
NautilusFile *file;
NautilusViewItemModel *item_model;
@@ -664,7 +664,7 @@ real_compute_rename_popover_pointing_to (NautilusFilesView *files_view)
static GdkRectangle *
real_reveal_for_selection_context_menu (NautilusFilesView *files_view)
{
- g_autoptr (GList) selection = NULL;
+ g_autolist (NautilusFile) selection = NULL;
NautilusViewIconController *self = NAUTILUS_VIEW_ICON_CONTROLLER (files_view);
GtkWidget *item_ui;
@@ -698,7 +698,7 @@ on_button_press_event (GtkWidget *widget,
gpointer user_data)
{
NautilusViewIconController *self;
- g_autoptr (GList) selection = NULL;
+ g_autolist (NautilusFile) selection = NULL;
GtkWidget *child_at_pos;
GdkEventButton *event_button;
@@ -744,8 +744,6 @@ on_button_press_event (GtkWidget *widget,
}
}
- g_list_foreach (selection, (GFunc) g_object_unref, NULL);
-
return GDK_EVENT_STOP;
}
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 4187cffff..f41eb3ef2 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -467,7 +467,7 @@ hide_query_editor (NautilusWindowSlot *self)
if (nautilus_view_is_searching (view))
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
selection = nautilus_view_get_selection (view);
@@ -476,8 +476,6 @@ hide_query_editor (NautilusWindowSlot *self)
nautilus_view_get_location (view),
0,
selection);
-
- nautilus_file_list_free (selection);
}
if (nautilus_window_slot_get_active (self))
@@ -1009,7 +1007,7 @@ nautilus_window_slot_open_location_full (NautilusWindowSlot *self,
{
NautilusWindowSlotPrivate *priv;
GFile *old_location;
- GList *old_selection;
+ g_autolist (NautilusFile) old_selection = NULL;
priv = nautilus_window_slot_get_instance_private (self);
old_selection = NULL;
@@ -1029,7 +1027,6 @@ nautilus_window_slot_open_location_full (NautilusWindowSlot *self,
NAUTILUS_LOCATION_CHANGE_STANDARD, 0, NULL);
done:
- nautilus_file_list_free (old_selection);
nautilus_profile_end (NULL);
}
@@ -1807,7 +1804,7 @@ setup_view (NautilusWindowSlot *self,
}
else if (old_location != NULL)
{
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
selection = nautilus_view_get_selection (priv->content_view);
@@ -1817,7 +1814,6 @@ setup_view (NautilusWindowSlot *self,
NULL,
FALSE,
TRUE);
- nautilus_file_list_free (selection);
}
else
{
@@ -1948,7 +1944,7 @@ nautilus_window_slot_set_content_view (NautilusWindowSlot *self,
guint id)
{
NautilusFilesView *view;
- GList *selection;
+ g_autolist (NautilusFile) selection = NULL;
char *uri;
NautilusWindowSlotPrivate *priv;
@@ -2052,8 +2048,8 @@ nautilus_window_slot_force_reload (NautilusWindowSlot *self)
{
GFile *location;
char *current_pos;
- GList *selection;
NautilusWindowSlotPrivate *priv;
+ g_autolist (NautilusFile) selection = NULL;
g_assert (NAUTILUS_IS_WINDOW_SLOT (self));
@@ -2069,7 +2065,7 @@ nautilus_window_slot_force_reload (NautilusWindowSlot *self)
*/
g_object_ref (location);
current_pos = NULL;
- selection = NULL;
+
if (priv->new_content_view)
{
selection = nautilus_view_get_selection (priv->content_view);
@@ -2084,7 +2080,6 @@ nautilus_window_slot_force_reload (NautilusWindowSlot *self)
NAUTILUS_LOCATION_CHANGE_RELOAD, 0, current_pos);
g_free (current_pos);
g_object_unref (location);
- nautilus_file_list_free (selection);
}
void
@@ -3076,7 +3071,6 @@ nautilus_window_slot_set_allow_stop (NautilusWindowSlot *self,
void
nautilus_window_slot_stop_loading (NautilusWindowSlot *self)
{
- GList *selection;
GFile *location;
NautilusDirectory *directory;
NautilusWindowSlotPrivate *priv;
@@ -3102,6 +3096,8 @@ nautilus_window_slot_stop_loading (NautilusWindowSlot *self)
* be told, or it is the very pending change we wish
* to cancel.
*/
+ g_autolist (NautilusFile) selection = NULL;
+
selection = nautilus_view_get_selection (priv->content_view);
load_new_location (self,
location,
@@ -3109,7 +3105,6 @@ nautilus_window_slot_stop_loading (NautilusWindowSlot *self)
NULL,
TRUE,
FALSE);
- nautilus_file_list_free (selection);
}
end_location_change (self);