Hello community, here is the log from the commit of package nautilus for openSUSE:Factory checked in at 2016-10-13 11:26:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nautilus (Old) and /work/SRC/openSUSE:Factory/.nautilus.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nautilus" Changes: -------- --- /work/SRC/openSUSE:Factory/nautilus/nautilus.changes 2016-09-21 18:39:05.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.nautilus.new/nautilus.changes 2016-10-13 11:26:25.000000000 +0200 @@ -1,0 +2,7 @@ +Sun Oct 9 07:46:04 UTC 2016 - [email protected] + +- Update nautilus-fix-desktop-icon-smash.patch: + porting upstream's solution to work out the general aspect + (bsc#979072, bgo#765601). + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nautilus-fix-desktop-icon-smash.patch ++++++ --- /var/tmp/diff_new_pack.xCE6bm/_old 2016-10-13 11:26:27.000000000 +0200 +++ /var/tmp/diff_new_pack.xCE6bm/_new 2016-10-13 11:26:27.000000000 +0200 @@ -1,23 +1,85 @@ -Index: nautilus-3.21.91/src/nautilus-canvas-container.c -=================================================================== ---- nautilus-3.21.91.orig/src/nautilus-canvas-container.c -+++ nautilus-3.21.91/src/nautilus-canvas-container.c -@@ -2039,7 +2039,8 @@ lay_down_icons_vertical_desktop (Nautilu - } - - /* Check and see if we need to move to a new column */ -- if (y != DESKTOP_PAD_VERTICAL && y + icon_height_for_bound_check > height) -+ if (y != DESKTOP_PAD_VERTICAL && y + icon_height_for_bound_check > height && -+ height > 0 && total > 3) - { - break; - } -@@ -2087,7 +2088,7 @@ lay_down_icons_vertical_desktop (Nautilu - /* Check and see if we need to move to a new column */ - if (y != DESKTOP_PAD_VERTICAL && y > height - icon_height_for_bound_check && - /* Make sure we lay out at least one icon per column, to make progress */ -- p != icons) -+ p != icons && height > 0 && total > 3) - { - x += column_width + DESKTOP_PAD_HORIZONTAL; - break; +From: d82b5bb6e06b6761bd5d5f3dc9a0762ce55517b4 Mon Sep 17 00:00:00 2001 +From: Iain Lane <[email protected]> +Date: Fri, 7 Oct 2016 12:24:18 +0100 +Subject: [PATCH] nautilus-canvas: Don't lay down desktop icons if we haven't + +Sometimes we were trying to lay down icons before size_allocate had been +run. When this has happened, gtk_widget_get_allocation returns 1×1 as +our size. This messes up the algorithm and causes icons to be +overlapping on the canvas. + +This case happens when using Nautilus as the desktop in early-startup +(e.g. from its XDG autostart file). It can happen that we have read the +desktop files before the allocation has happened. + +We fix this by noticing if we're called before size_allocate and then +deferring icon layout until later on, after size_allocate has happened. + +This behaviour was introduced in commit +e0081be7cd65de6422529d831f7882009ce00a9d, which sorts and freezes the +desktop in early-startup. + +https://bugzilla.suse.com/show_bug.cgi?id=979072 + +https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/1611955 + +https://bugzilla.gnome.org/show_bug.cgi?id=765601 + + +diff -Nura nautilus-3.22.0/src/nautilus-canvas-container.c nautilus-3.22.0_new/src/nautilus-canvas-container.c +--- nautilus-3.22.0/src/nautilus-canvas-container.c 2016-09-13 21:06:51.000000000 +0000 ++++ nautilus-3.22.0_new/src/nautilus-canvas-container.c 2016-10-09 10:01:33.953215876 +0000 +@@ -1432,6 +1432,9 @@ + + g_assert (NAUTILUS_IS_CANVAS_CONTAINER (container)); + ++ /* We can't get the right allocation if the size hasn't been allocated yet */ ++ g_return_if_fail (container->details->has_been_allocated); ++ + if (icons == NULL) + { + return; +@@ -1938,6 +1941,9 @@ + EelDRect icon_rect; + GtkAllocation allocation; + ++ /* We can't get the right allocation if the size hasn't been allocated yet */ ++ g_return_if_fail (container->details->has_been_allocated); ++ + /* Get container dimensions */ + gtk_widget_get_allocation (GTK_WIDGET (container), &allocation); + height = CANVAS_HEIGHT (container, allocation); +@@ -2218,7 +2224,13 @@ + redo_layout (NautilusCanvasContainer *container) + { + unschedule_redo_layout (container); +- redo_layout_internal (container); ++ /* We can't lay out if the size hasn't been allocated yet; wait for it to ++ * be and then we will be called again from size_allocate () ++ */ ++ if (container->details->has_been_allocated) ++ { ++ redo_layout_internal (container); ++ } + } + + static void +@@ -7836,6 +7848,18 @@ + NautilusCanvasIcon *icon; + NautilusCanvasPosition position; + ++ /* This early-exit avoids freezing the icons before they have been properly ++ * positioned, since we won't re-layout if auto_layout is FALSE. ++ * ++ * The container will freeze the icons after it lays them out once we've ++ * been allocated (e.g. in lay_out_icons_vertical_desktop). ++ */ ++ if (!container->details->has_been_allocated) ++ { ++ g_debug ("Not freezing icon positions yet; we haven't been allocated"); ++ return; ++ } ++ + changed = container->details->auto_layout; + container->details->auto_layout = FALSE; +
