From 0b4363e54502d1894f2fa6cada8bb4f634052d62 Mon Sep 17 00:00:00 2001 From: leigh123linux Date: Jun 22 2017 07:59:12 +0000 Subject: Add patch to fix desktop auto-layout crash --- diff --git a/fix-auto-layout-crash.patch b/fix-auto-layout-crash.patch new file mode 100644 index 0000000..891e443 --- /dev/null +++ b/fix-auto-layout-crash.patch @@ -0,0 +1,96 @@ +From ab5185ba5a8744d738284ad83402dbc44962511c Mon Sep 17 00:00:00 2001 +From: Michael Webster +Date: Thu, 22 Jun 2017 03:02:10 -0400 +Subject: [PATCH] nemo-icon-view-grid-container.c: skip default placement if + we're in auto-layout mode. We get false lazy flags on new icons since the + original desktop did not use auto-layout. We need to handle this because we + both store layout timestamps and provide auto-layout. + +nemo-file-operations.c: remove some excessive metadata setting during +certain operations. +--- + libnemo-private/nemo-file-operations.c | 26 ++++++-------------------- + src/nemo-icon-view-grid-container.c | 3 ++- + 2 files changed, 8 insertions(+), 21 deletions(-) + +diff --git a/libnemo-private/nemo-file-operations.c b/libnemo-private/nemo-file-operations.c +index a6b9cdf7f..e55cd2b8c 100644 +--- a/libnemo-private/nemo-file-operations.c ++++ b/libnemo-private/nemo-file-operations.c +@@ -4338,15 +4338,16 @@ copy_move_file (CopyMoveJob *copy_job, + transfer_info->num_files ++; + report_copy_progress (copy_job, source_info, transfer_info); + +- if (debuting_files) { ++ if (debuting_files) { + if (target_is_desktop && position) { + nemo_file_changes_queue_schedule_position_set (dest, *position, job->monitor_num); +- } else if (source_is_desktop) { ++ } else if (source_is_desktop && copy_job->is_move) { + nemo_file_changes_queue_schedule_position_remove (dest); ++ } ++ ++ g_hash_table_replace (debuting_files, g_object_ref (dest), GINT_TO_POINTER (TRUE)); + } + +- g_hash_table_replace (debuting_files, g_object_ref (dest), GINT_TO_POINTER (TRUE)); +- } + if (copy_job->is_move) { + nemo_file_changes_queue_file_moved (src, dest); + } else { +@@ -5461,22 +5462,11 @@ link_file (CopyMoveJob *job, + char *primary, *secondary, *details; + int response; + gboolean handled_invalid_filename; +- gboolean target_is_desktop, source_is_desktop; ++ gboolean target_is_desktop; + + target_is_desktop = (job->desktop_location != NULL && + g_file_equal (job->desktop_location, dest_dir)); + +- source_is_desktop = FALSE; +- +- if (src != NULL) { +- GFile *parent = g_file_get_parent (src); +- +- if (parent != NULL && g_file_equal (job->desktop_location, parent)) { +- source_is_desktop = TRUE; +- g_object_unref (parent); +- } +- } +- + common = (CommonJob *)job; + + count = 0; +@@ -5517,8 +5507,6 @@ link_file (CopyMoveJob *job, + + if (target_is_desktop && position) { + nemo_file_changes_queue_schedule_position_set (dest, *position, common->monitor_num); +- } else if (source_is_desktop) { +- nemo_file_changes_queue_schedule_position_remove (dest); + } + + g_object_unref (dest); +@@ -6254,8 +6242,6 @@ create_job (GIOSchedulerJob *io_job, + nemo_file_changes_queue_file_added (dest); + if (job->has_position) { + nemo_file_changes_queue_schedule_position_set (dest, job->position, common->monitor_num); +- } else { +- nemo_file_changes_queue_schedule_position_remove (dest); + } + } else { + g_assert (error != NULL); +diff --git a/src/nemo-icon-view-grid-container.c b/src/nemo-icon-view-grid-container.c +index 7330f4f4f..202c1f031 100644 +--- a/src/nemo-icon-view-grid-container.c ++++ b/src/nemo-icon-view-grid-container.c +@@ -1148,7 +1148,8 @@ nemo_icon_view_grid_container_finish_adding_new_icons (NemoIconContainer *contai + + nemo_icon_container_update_icon (container, icon); + +- if (icon->has_lazy_position || nemo_icon_container_icon_is_new_for_monitor (container, icon, current_monitor)) { ++ if (!container->details->auto_layout && ++ (icon->has_lazy_position || nemo_icon_container_icon_is_new_for_monitor (container, icon, current_monitor))) { + assign_icon_position (container, icon); + semi_position_icons = g_list_prepend (semi_position_icons, icon); + } else if (!assign_icon_position (container, icon)) { diff --git a/nemo.spec b/nemo.spec index b659279..aa3cb7d 100644 --- a/nemo.spec +++ b/nemo.spec @@ -1,7 +1,7 @@ Name: nemo Summary: File manager for Cinnamon Version: 3.4.3 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ and LGPLv2+ URL: https://github.com/linuxmint/ Source0: %url/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz @@ -9,6 +9,7 @@ Source1: https://raw.githubusercontent.com/linuxmint/mint-common/master/u Source2: nemo-fedora.gschema.override Patch0: remove_desktop_search.patch Patch1: %url/%{name}/pull/1513.patch#/Don-t-scale-text-size-when-zooming.patch +Patch2: %url/%{name}/commit/ab5185ba5a8744d738284ad83402dbc44962511c.patch#/fix-auto-layout-crash.patch Requires: redhat-menus Requires: gvfs%{_isa} @@ -145,6 +146,9 @@ fi %{_datadir}/gir-1.0/*.gir %changelog +* Thu Jun 22 2017 Leigh Scott - 3.4.3-2 +- Add patch to fix desktop auto-layout crash. + * Wed Jun 21 2017 Leigh Scott - 3.4.3-1 - update to 3.4.3 release