Hello community,

here is the log from the commit of package nemo for openSUSE:Factory checked in 
at 2017-06-22 10:40:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nemo (Old)
 and      /work/SRC/openSUSE:Factory/.nemo.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nemo"

Thu Jun 22 10:40:49 2017 rev:13 rq:505538 version:3.4.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/nemo/nemo.changes        2017-05-27 
13:13:18.938337115 +0200
+++ /work/SRC/openSUSE:Factory/.nemo.new/nemo.changes   2017-06-22 
10:40:51.297714749 +0200
@@ -1,0 +2,31 @@
+Wed Jun 21 16:11:48 UTC 2017 - [email protected]
+
+- Update to version 3.4.3:
+  * Remove decoration from desktop window (shows in weston).
+  * Desktop: Relax control of positioning for placed icons.
+    At startup, they are loaded and set to their stored position,
+    but not force-aligned, allowing the layout to ignore
+    fluctuations in the work area during system startup.
+    Fix some logic around "orphan" icons as well to prevent issues
+    with icons not being shown due to being falsely classified as
+    orphans.
+  * icon container: Be more specific about when to flag icons
+    coming from a different monitor due to a desktop configuration
+    change.
+  * metadata: Add back cached position values in NemoFile.
+    Be sure to clear the timestamp metadata on files being
+    moved/copied to or from the desktop. This ensures the lazy flag
+    operates correctly. With the desktop becoming a separate
+    process, transfers that include position info need to be
+    handled slightly differently, as the old way of just setting
+    metadata and reacting to it from a new container won't work -
+    the file gets debuted in the other process sooner than (or not
+    reliably after, at least) the metadata is written, resulting in
+    inconsistent positioning.
+  * Add gvfs-info action for inspecting file metadata (for purposes
+    of debugging) - right-click a file and it will send gvfs-info
+    output on that file to stdout.
+  * nemo-icon-view-grid-container.c: Improve updates after
+    thumbnail generation.
+
+-------------------------------------------------------------------

Old:
----
  nemo-3.4.2.tar.gz

New:
----
  nemo-3.4.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ nemo.spec ++++++
--- /var/tmp/diff_new_pack.UyrDaR/_old  2017-06-22 10:40:51.945623399 +0200
+++ /var/tmp/diff_new_pack.UyrDaR/_new  2017-06-22 10:40:51.949622835 +0200
@@ -20,7 +20,7 @@
 %define sover   1
 %define typelib typelib-1_0-Nemo-3_0
 Name:           nemo
-Version:        3.4.2
+Version:        3.4.3
 Release:        0
 Summary:        File browser for Cinnamon
 License:        GPL-2.0+

++++++ nemo-3.4.2.tar.gz -> nemo-3.4.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/configure.ac new/nemo-3.4.3/configure.ac
--- old/nemo-3.4.2/configure.ac 2017-05-23 16:54:49.000000000 +0200
+++ new/nemo-3.4.3/configure.ac 2017-06-20 15:44:34.000000000 +0200
@@ -18,7 +18,7 @@
 m4_define(nemo_extension_current,  5)
 m4_define(nemo_extension_revision, 0)
 
-AC_INIT(nemo, 3.4.2, https://github.com/linuxmint/nemo)
+AC_INIT(nemo, 3.4.3, https://github.com/linuxmint/nemo)
 
 dnl ===========================================================================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/debian/changelog 
new/nemo-3.4.3/debian/changelog
--- old/nemo-3.4.2/debian/changelog     2017-05-23 16:54:49.000000000 +0200
+++ new/nemo-3.4.3/debian/changelog     2017-06-20 15:44:34.000000000 +0200
@@ -1,3 +1,17 @@
+nemo (3.4.3) sonya; urgency=medium
+
+  [ leigh123linux ]
+  * Remove decoration from desktop window (shows in weston)
+
+  [ Michael Webster ]
+  * Desktop: Relax control of positioning for placed icons.  At startup, they 
are loaded and set to their stored position, but not force-aligned, allowing 
the layout to ignore fluctuations in the work area during system startup.  Fix 
some logic around 'orphan' icons as well to prevent issues with icons not being 
shown due to being falsely classified as orphans.
+  * icon container: Be more specific about when to flag icons coming from a 
different monitor due to a desktop configuration change. (see previous commit)
+  * metadata: Add back cached position values in NemoFile.  Be sure to clear 
the timestamp metadata on files being moved/copied to or from the desktop. This 
ensures the lazy flag operates correctly.  With the desktop becoming a separate 
process, transfers that include position info need to be handled slightly 
differently, as the old way of just setting metadata and reacting to it from a 
new container won't work - the file gets debuted in the other process sooner 
than (or not reliably after, at least) the metadata is written, resulting in 
inconsistent positioning.
+  * Add gvfs-info action for inspecting file metadata (for purposes of 
debugging) - right-click a file and it will send gvfs-info output on that file 
to stdout.
+  * nemo-icon-view-grid-container.c: improve updates after thumbnail 
generation.
+
+ -- Clement Lefebvre <[email protected]>  Tue, 20 Jun 2017 15:43:53 +0200
+
 nemo (3.4.2) sonya; urgency=medium
 
   [ Michael Webster ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nemo-3.4.2/libnemo-private/nemo-centered-placement-grid.c 
new/nemo-3.4.3/libnemo-private/nemo-centered-placement-grid.c
--- old/nemo-3.4.2/libnemo-private/nemo-centered-placement-grid.c       
2017-05-23 16:54:49.000000000 +0200
+++ new/nemo-3.4.3/libnemo-private/nemo-centered-placement-grid.c       
2017-06-20 15:44:34.000000000 +0200
@@ -231,20 +231,17 @@
 void
 nemo_centered_placement_grid_mark_icon (NemoCenteredPlacementGrid *grid, 
NemoIcon *icon)
 {
-    gint nom_x, nom_y, grid_x, grid_y;
+    gint grid_x, grid_y;
+    GdkRectangle rect;
 
     if (icon->x <= 0.0 && icon->y <= 0.0) {
         return;
     }
 
-    nemo_centered_placement_grid_icon_position_to_nominal (grid,
-                                                           icon,
-                                                           icon->x,
-                                                           icon->y,
-                                                           &nom_x, &nom_y);
+    nemo_centered_placement_grid_get_current_position_rect (grid, icon->x, 
icon->y, &rect, NULL);
 
-    grid_x = (nom_x - grid->borders->left) / grid->real_snap_x;
-    grid_y = (nom_y - grid->borders->top) / grid->real_snap_y;
+    grid_x = rect.x / grid->real_snap_x;
+    grid_y = rect.y / grid->real_snap_y;
 
     if ((grid_x >= 0 && grid_x < grid->num_columns) &&
        (grid_y >= 0 && grid_y < grid->num_rows)) {
@@ -256,20 +253,17 @@
 nemo_centered_placement_grid_unmark_icon (NemoCenteredPlacementGrid *grid,
                                           NemoIcon                  *icon)
 {
-    gint nom_x, nom_y, grid_x, grid_y;
+    gint grid_x, grid_y;
+    GdkRectangle rect;
 
     if (icon->x <= 0.0 && icon->y <= 0.0) {
         return;
     }
 
-    nemo_centered_placement_grid_icon_position_to_nominal (grid,
-                                                           icon,
-                                                           icon->x,
-                                                           icon->y,
-                                                           &nom_x, &nom_y);
+    nemo_centered_placement_grid_get_current_position_rect (grid, icon->x, 
icon->y, &rect, NULL);
 
-    grid_x = (nom_x - grid->borders->left) / grid->real_snap_x;
-    grid_y = (nom_y - grid->borders->top) / grid->real_snap_y;
+    grid_x = rect.x / grid->real_snap_x;
+    grid_y = rect.y / grid->real_snap_y;
 
     if ((grid_x >= 0 && grid_x < grid->num_columns) &&
        (grid_y >= 0 && grid_y < grid->num_rows)) {
@@ -333,14 +327,23 @@
 
 void
 nemo_centered_placement_grid_pre_populate (NemoCenteredPlacementGrid *grid,
-                                           GList                     *icons)
+                                           GList                     *icons,
+                                           gboolean                   
ignore_lazy)
 {
     GList *p;
     NemoIcon *icon;
 
     for (p = icons; p != NULL; p = p->next) {
+        gboolean should_mark;
         icon = p->data;
-        if (nemo_icon_container_icon_is_positioned (icon)) {
+
+        if (ignore_lazy) {
+            should_mark = nemo_icon_container_icon_is_positioned (icon) && 
!icon->has_lazy_position;
+        } else {
+            should_mark = nemo_icon_container_icon_is_positioned (icon);
+        }
+
+        if (should_mark) {
             nemo_centered_placement_grid_mark_icon (grid, icon);
         }
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/libnemo-private/nemo-directory.c 
new/nemo-3.4.3/libnemo-private/nemo-directory.c
--- old/nemo-3.4.2/libnemo-private/nemo-directory.c     2017-05-23 
16:54:49.000000000 +0200
+++ new/nemo-3.4.3/libnemo-private/nemo-directory.c     2017-06-20 
15:44:34.000000000 +0200
@@ -1412,24 +1412,14 @@
             nemo_file_set_position (file, -1, -1);
                }
 
-               if (item->set) {
-                       nemo_file_set_time_metadata
-                               (file,
-                                NEMO_METADATA_KEY_ICON_POSITION_TIMESTAMP,
-                                now);
-               } else {
-                       nemo_file_set_time_metadata
-                               (file,
-                                NEMO_METADATA_KEY_ICON_POSITION_TIMESTAMP,
-                                UNDEFINED_TIME);
-               }
-
         if (item->set) {
             nemo_file_set_monitor_number (file, item->monitor);
         } else {
             nemo_file_set_monitor_number (file, -1);
         }
 
+        nemo_file_set_time_metadata (file, 
NEMO_METADATA_KEY_ICON_POSITION_TIMESTAMP, UNDEFINED_TIME);
+
                nemo_file_unref (file);
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/libnemo-private/nemo-file-operations.c 
new/nemo-3.4.3/libnemo-private/nemo-file-operations.c
--- old/nemo-3.4.2/libnemo-private/nemo-file-operations.c       2017-05-23 
16:54:49.000000000 +0200
+++ new/nemo-3.4.3/libnemo-private/nemo-file-operations.c       2017-06-20 
15:44:34.000000000 +0200
@@ -4195,7 +4195,7 @@
        gboolean res;
        int unique_name_nr;
        gboolean handled_invalid_filename;
-    gboolean target_is_desktop;
+    gboolean target_is_desktop, source_is_desktop;
 
        job = (CommonJob *)copy_job;
        
@@ -4207,6 +4207,17 @@
     target_is_desktop = (copy_job->desktop_location != NULL &&
                          g_file_equal (copy_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 (copy_job->desktop_location, 
parent)) {
+            source_is_desktop = TRUE;
+            g_object_unref (parent);
+        }
+    }
+
        unique_name_nr = 1;
 
        /* another file in the same directory might have handled the invalid
@@ -4328,13 +4339,11 @@
                report_copy_progress (copy_job, source_info, transfer_info);
 
                if (debuting_files) {
-            if (target_is_desktop) {
-                if (position) {
-                    nemo_file_changes_queue_schedule_position_set (dest, 
*position, job->monitor_num);
-                } else {
-                    nemo_file_changes_queue_schedule_position_remove (dest);
-                }
-            }
+            if (target_is_desktop && position) {
+                nemo_file_changes_queue_schedule_position_set (dest, 
*position, job->monitor_num);
+            } else if (source_is_desktop) {
+                nemo_file_changes_queue_schedule_position_remove (dest);
+        }
 
                        g_hash_table_replace (debuting_files, g_object_ref 
(dest), GINT_TO_POINTER (TRUE));
                }
@@ -4915,11 +4924,22 @@
        GFileCopyFlags flags;
        MoveFileCopyFallback *fallback;
        gboolean handled_invalid_filename;
-    gboolean target_is_desktop;
+    gboolean target_is_desktop, source_is_desktop;
 
     target_is_desktop = (move_job->desktop_location != NULL &&
                          g_file_equal (move_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 (move_job->desktop_location, 
parent)) {
+            source_is_desktop = TRUE;
+            g_object_unref (parent);
+        }
+    }
+
        overwrite = FALSE;
        handled_invalid_filename = *dest_fs_type != NULL;
 
@@ -4983,12 +5003,10 @@
 
                nemo_file_changes_queue_file_moved (src, dest);
 
-        if (target_is_desktop) {
-            if (position) {
-                nemo_file_changes_queue_schedule_position_set (dest, 
*position, job->monitor_num);
-            } else {
-                nemo_file_changes_queue_schedule_position_remove (dest);
-            }
+        if (target_is_desktop && position) {
+            nemo_file_changes_queue_schedule_position_set (dest, *position, 
job->monitor_num);
+        } else if (source_is_desktop) {
+            nemo_file_changes_queue_schedule_position_remove (dest);
         }
 
                if (job->undo_info != NULL) {
@@ -5344,6 +5362,7 @@
 
        job = op_job_new (CopyMoveJob, parent_window);
        job->is_move = TRUE;
+    job->desktop_location = nemo_get_desktop_location ();
        job->done_callback = done_callback;
        job->done_callback_data = done_callback_data;
        job->files = eel_g_object_list_copy (files);
@@ -5442,11 +5461,22 @@
        char *primary, *secondary, *details;
        int response;
        gboolean handled_invalid_filename;
-    gboolean target_is_desktop;
+    gboolean target_is_desktop, source_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;
@@ -5485,12 +5515,10 @@
                
                nemo_file_changes_queue_file_added (dest);
 
-        if (target_is_desktop) {
-            if (position) {
-                nemo_file_changes_queue_schedule_position_set (dest, 
*position, common->monitor_num);
-            } else {
-                nemo_file_changes_queue_schedule_position_remove (dest);
-            }
+        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);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/libnemo-private/nemo-file-private.h 
new/nemo-3.4.3/libnemo-private/nemo-file-private.h
--- old/nemo-3.4.2/libnemo-private/nemo-file-private.h  2017-05-23 
16:54:49.000000000 +0200
+++ new/nemo-3.4.3/libnemo-private/nemo-file-private.h  2017-06-20 
15:44:34.000000000 +0200
@@ -221,7 +221,8 @@
        time_t free_space_read; /* The time free_space was updated, or 0 for 
never */
 
     gint desktop_monitor;
-    GdkPoint *position;
+    gint cached_position_x;
+    gint cached_position_y;
 };
 
 typedef struct {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/libnemo-private/nemo-file.c 
new/nemo-3.4.3/libnemo-private/nemo-file.c
--- old/nemo-3.4.2/libnemo-private/nemo-file.c  2017-05-23 16:54:49.000000000 
+0200
+++ new/nemo-3.4.3/libnemo-private/nemo-file.c  2017-06-20 15:44:34.000000000 
+0200
@@ -177,10 +177,9 @@
 {
        file->details = G_TYPE_INSTANCE_GET_PRIVATE ((file), NEMO_TYPE_FILE, 
NemoFileDetails);
 
-    file->details->position = g_new0 (GdkPoint, 1);
-    file->details->position->x = -1;
-    file->details->position->y = -1;
     file->details->desktop_monitor = -1;
+    file->details->cached_position_x = -1;
+    file->details->cached_position_y = -1;
 
        nemo_file_clear_info (file);
        nemo_file_invalidate_extension_info_internal (file);
@@ -511,8 +510,6 @@
 
     file->details->is_desktop_orphan = FALSE;
 
-    file->details->position->x = -1;
-    file->details->position->y = -1;
     file->details->desktop_monitor = -1;
 
        clear_metadata (file);
@@ -830,8 +827,6 @@
        g_free (file->details->activation_uri);
        g_clear_object (&file->details->custom_icon);
 
-    g_clear_pointer (&file->details->position, g_free);
-
        if (file->details->thumbnail) {
                g_object_unref (file->details->thumbnail);
        }
@@ -7573,12 +7568,12 @@
     file->details->desktop_monitor = monitor;
 }
 
-GdkPoint *
-nemo_file_get_position (NemoFile *file)
+void
+nemo_file_get_position (NemoFile *file, GdkPoint *point)
 {
     gint x, y;
 
-    if (file->details->position->x == -1) {
+    if (file->details->cached_position_x == -1) {
         char *position_string;
         gboolean position_good;
         char c;
@@ -7590,12 +7585,19 @@
         g_free (position_string);
 
         if (position_good) {
-            file->details->position->x = x;
-            file->details->position->y = y;
+            point->x = x;
+            point->y = y;
+        } else {
+            point->x = -1;
+            point->y = -1;
         }
-    }
 
-    return file->details->position;
+        file->details->cached_position_x = x;
+        file->details->cached_position_y = y;
+    } else {
+        point->x = file->details->cached_position_x;
+        point->y = file->details->cached_position_y;
+    }
 }
 
 void
@@ -7610,8 +7612,8 @@
     }
     nemo_file_set_metadata (file, NEMO_METADATA_KEY_ICON_POSITION, NULL, 
position_string);
 
-    file->details->position->x = x;
-    file->details->position->y = y;
+    file->details->cached_position_x = x;
+    file->details->cached_position_y = y;
 
     g_free (position_string);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/libnemo-private/nemo-file.h 
new/nemo-3.4.3/libnemo-private/nemo-file.h
--- old/nemo-3.4.2/libnemo-private/nemo-file.h  2017-05-23 16:54:49.000000000 
+0200
+++ new/nemo-3.4.3/libnemo-private/nemo-file.h  2017-06-20 15:44:34.000000000 
+0200
@@ -497,7 +497,7 @@
 
 gint     nemo_file_get_monitor_number             (NemoFile *file);
 void     nemo_file_set_monitor_number             (NemoFile *file, gint 
monitor);
-GdkPoint *nemo_file_get_position                  (NemoFile *file);
+void     nemo_file_get_position                   (NemoFile *file, GdkPoint 
*point);
 void     nemo_file_set_position                   (NemoFile *file, gint x, 
gint y);
 gboolean nemo_file_get_is_desktop_orphan          (NemoFile *file);
 void     nemo_file_set_is_desktop_orphan          (NemoFile *file, gboolean 
is_desktop_orphan);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/libnemo-private/nemo-icon-container.c 
new/nemo-3.4.3/libnemo-private/nemo-icon-container.c
--- old/nemo-3.4.2/libnemo-private/nemo-icon-container.c        2017-05-23 
16:54:49.000000000 +0200
+++ new/nemo-3.4.3/libnemo-private/nemo-icon-container.c        2017-06-20 
15:44:34.000000000 +0200
@@ -5683,6 +5683,18 @@
        return (!success || timestamp < container->details->layout_timestamp);
 }
 
+gboolean
+nemo_icon_container_icon_is_new_for_monitor (NemoIconContainer *container,
+                                             NemoIcon          *icon,
+                                             gint               
current_monitor)
+{
+    if (container->details->auto_layout || !container->details->is_desktop) {
+        return FALSE;
+    }
+
+    return nemo_file_get_monitor_number (NEMO_FILE (icon->data)) != 
current_monitor;
+}
+
 /**
  * nemo_icon_container_add:
  * @container: A NemoIconContainer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/libnemo-private/nemo-icon-container.h 
new/nemo-3.4.3/libnemo-private/nemo-icon-container.h
--- old/nemo-3.4.2/libnemo-private/nemo-icon-container.h        2017-05-23 
16:54:49.000000000 +0200
+++ new/nemo-3.4.3/libnemo-private/nemo-icon-container.h        2017-06-20 
15:44:34.000000000 +0200
@@ -251,6 +251,9 @@
 
 /* adding, removing, and managing icons */
 void              nemo_icon_container_clear                         
(NemoIconContainer  *view);
+gboolean          nemo_icon_container_icon_is_new_for_monitor       
(NemoIconContainer *container,
+                                                                     NemoIcon  
        *icon,
+                                                                     gint      
         current_monitor);
 gboolean          nemo_icon_container_add                           
(NemoIconContainer  *view,
                                                                         
NemoIconData       *data);
 void              nemo_icon_container_layout_now                    
(NemoIconContainer *container);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/libnemo-private/nemo-icon-dnd.c 
new/nemo-3.4.3/libnemo-private/nemo-icon-dnd.c
--- old/nemo-3.4.2/libnemo-private/nemo-icon-dnd.c      2017-05-23 
16:54:49.000000000 +0200
+++ new/nemo-3.4.3/libnemo-private/nemo-icon-dnd.c      2017-06-20 
15:44:34.000000000 +0200
@@ -101,7 +101,7 @@
     container->details->dnd_grid = nemo_centered_placement_grid_new (container,
                                                                      
container->details->horizontal);
 
-    nemo_centered_placement_grid_pre_populate (container->details->dnd_grid, 
container->details->icons);
+    nemo_centered_placement_grid_pre_populate (container->details->dnd_grid, 
container->details->icons, FALSE);
 
     selection = nemo_icon_container_get_selection (container);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/libnemo-private/nemo-icon-private.h 
new/nemo-3.4.3/libnemo-private/nemo-icon-private.h
--- old/nemo-3.4.2/libnemo-private/nemo-icon-private.h  2017-05-23 
16:54:49.000000000 +0200
+++ new/nemo-3.4.3/libnemo-private/nemo-icon-private.h  2017-06-20 
15:44:34.000000000 +0200
@@ -427,7 +427,8 @@
                                                                  gint          
             x,
                                                                  gint          
             y);
 void               nemo_centered_placement_grid_pre_populate        
(NemoCenteredPlacementGrid *grid,
-                                                                     GList     
                *icons);
+                                                                     GList     
                *icons,
+                                                                     gboolean  
                 ignore_lazy);
 void               nemo_centered_placement_grid_get_next_position_rect 
(NemoCenteredPlacementGrid *grid,
                                                                         
GdkRectangle              *in_rect,
                                                                         
GdkRectangle              *out_rect,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/src/nemo-bookmark-list.c 
new/nemo-3.4.3/src/nemo-bookmark-list.c
--- old/nemo-3.4.2/src/nemo-bookmark-list.c     2017-05-23 16:54:49.000000000 
+0200
+++ new/nemo-3.4.3/src/nemo-bookmark-list.c     2017-06-20 15:44:34.000000000 
+0200
@@ -1001,7 +1001,6 @@
     GTask *task;
 
     g_object_ref (self);
-    // G_BREAKPOINT ();
     task = g_task_new (self, NULL, callback, self);
     g_task_run_in_thread (task, save_files_thread);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/src/nemo-desktop-icon-grid-view.c 
new/nemo-3.4.3/src/nemo-desktop-icon-grid-view.c
--- old/nemo-3.4.2/src/nemo-desktop-icon-grid-view.c    2017-05-23 
16:54:49.000000000 +0200
+++ new/nemo-3.4.3/src/nemo-desktop-icon-grid-view.c    2017-06-20 
15:44:34.000000000 +0200
@@ -208,7 +208,10 @@
     NemoDesktopManager *dm = nemo_desktop_manager_get ();
 
     if (current_monitor == file_monitor) {
-        nemo_file_set_is_desktop_orphan (file, FALSE);
+        return TRUE;
+    }
+
+    if (nemo_desktop_manager_get_primary_only (dm)) {
         return TRUE;
     }
 
@@ -221,6 +224,7 @@
         /* New file, no previous metadata - this should go on the primary 
monitor */
         return nemo_desktop_manager_get_monitor_is_primary (dm, 
current_monitor);
     }
+
     if (!nemo_desktop_manager_get_monitor_is_active (dm, file_monitor)) {
         nemo_file_set_is_desktop_orphan (file, TRUE);
         if (nemo_desktop_manager_get_monitor_is_primary (dm, current_monitor)) 
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/src/nemo-desktop-icon-view.c 
new/nemo-3.4.3/src/nemo-desktop-icon-view.c
--- old/nemo-3.4.2/src/nemo-desktop-icon-view.c 2017-05-23 16:54:49.000000000 
+0200
+++ new/nemo-3.4.3/src/nemo-desktop-icon-view.c 2017-06-20 15:44:34.000000000 
+0200
@@ -174,7 +174,10 @@
     NemoDesktopManager *dm = nemo_desktop_manager_get ();
 
     if (current_monitor == file_monitor) {
-        nemo_file_set_is_desktop_orphan (file, FALSE);
+        return TRUE;
+    }
+
+    if (nemo_desktop_manager_get_primary_only (dm)) {
         return TRUE;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/src/nemo-desktop-manager.c 
new/nemo-3.4.3/src/nemo-desktop-manager.c
--- old/nemo-3.4.2/src/nemo-desktop-manager.c   2017-05-23 16:54:49.000000000 
+0200
+++ new/nemo-3.4.3/src/nemo-desktop-manager.c   2017-06-20 15:44:34.000000000 
+0200
@@ -146,6 +146,8 @@
     show_desktop_on_primary = g_strcmp0 (pref_split[0], "true") == 0;
     show_desktop_on_remaining = g_strcmp0 (pref_split[1], "true") == 0;
 
+    manager->desktop_on_primary_only = show_desktop_on_primary && 
!show_desktop_on_remaining;
+
     gint i = 0;
     gboolean primary_set = FALSE;
 
@@ -284,6 +286,8 @@
 
     self->desktops = NULL;
 
+    self->desktop_on_primary_only = FALSE;
+
     self->action_manager = nemo_action_manager_new ();
 }
 
@@ -359,6 +363,12 @@
     return ret;
 }
 
+gboolean
+nemo_desktop_manager_get_primary_only (NemoDesktopManager *manager)
+{
+    return manager->desktop_on_primary_only;
+}
+
 NemoActionManager *
 nemo_desktop_manager_get_action_manager (void)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/src/nemo-desktop-manager.h 
new/nemo-3.4.3/src/nemo-desktop-manager.h
--- old/nemo-3.4.2/src/nemo-desktop-manager.h   2017-05-23 16:54:49.000000000 
+0200
+++ new/nemo-3.4.3/src/nemo-desktop-manager.h   2017-06-20 15:44:34.000000000 
+0200
@@ -50,6 +50,8 @@
 
   guint update_layout_idle_id;
 
+  gboolean desktop_on_primary_only;
+
   NemoActionManager *action_manager;
 
   GList *desktops;
@@ -69,6 +71,8 @@
 gboolean nemo_desktop_manager_get_monitor_is_primary (NemoDesktopManager 
*manager,
                                                                    gint  
monitor);
 
+gboolean nemo_desktop_manager_get_primary_only (NemoDesktopManager *manager);
+
 G_END_DECLS
 
 #endif /* _NEMO_DESKTOP_MANAGER_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/src/nemo-desktop-window.c 
new/nemo-3.4.3/src/nemo-desktop-window.c
--- old/nemo-3.4.2/src/nemo-desktop-window.c    2017-05-23 16:54:49.000000000 
+0200
+++ new/nemo-3.4.3/src/nemo-desktop-window.c    2017-06-20 15:44:34.000000000 
+0200
@@ -137,6 +137,8 @@
 
     gtk_window_set_resizable (GTK_WINDOW (window),
                   FALSE);
+    gtk_window_set_decorated (GTK_WINDOW (window),
+                  FALSE);
 
     gtk_widget_show (GTK_WIDGET (window));
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/src/nemo-icon-view-container.c 
new/nemo-3.4.3/src/nemo-icon-view-container.c
--- old/nemo-3.4.2/src/nemo-icon-view-container.c       2017-05-23 
16:54:49.000000000 +0200
+++ new/nemo-3.4.3/src/nemo-icon-view-container.c       2017-06-20 
15:44:34.000000000 +0200
@@ -618,7 +618,7 @@
                           NemoIconData      *data,
                           NemoIconPosition  *position)
 {
-    GdkPoint *point;
+    GdkPoint point;
     char *scale_string;
     NemoIconView *icon_view;
     NemoFile *file;
@@ -636,9 +636,9 @@
         return FALSE;
     }
 
-    point = nemo_file_get_position (file);
-    position->x = point->x;
-    position->y = point->y;
+    nemo_file_get_position (file, &point);
+    position->x = point.x;
+    position->y = point.y;
 
     /* If it is the desktop directory, maybe the gnome-libs metadata has 
information about it */
 
@@ -1843,17 +1843,20 @@
     GList *p, *new_icons, *no_position_icons, *semi_position_icons;
     NemoIcon *icon;
     double bottom;
+    gint current_monitor;
 
     new_icons = container->details->new_icons;
     container->details->new_icons = NULL;
 
+    current_monitor = nemo_desktop_utils_get_monitor_for_widget (container);
+
     /* Position most icons (not unpositioned manual-layout icons). */
     new_icons = g_list_reverse (new_icons);
     no_position_icons = semi_position_icons = NULL;
     for (p = new_icons; p != NULL; p = p->next) {
         icon = p->data;
         nemo_icon_container_update_icon (container, icon);
-        if (icon->has_lazy_position) {
+        if (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)) {
@@ -1903,6 +1906,7 @@
             position.x = icon->x;
             position.y = icon->y;
             position.scale = icon->scale;
+            position.monitor = current_monitor;
             nemo_placement_grid_mark_icon (grid, icon);
             g_signal_emit_by_name (container, "icon_position_changed",
                                    icon->data, &position);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/src/nemo-icon-view-grid-container.c 
new/nemo-3.4.3/src/nemo-icon-view-grid-container.c
--- old/nemo-3.4.2/src/nemo-icon-view-grid-container.c  2017-05-23 
16:54:49.000000000 +0200
+++ new/nemo-3.4.3/src/nemo-icon-view-grid-container.c  2017-06-20 
15:44:34.000000000 +0200
@@ -512,7 +512,7 @@
                           NemoIconPosition  *position)
 {
     NemoFile *file;
-    GdkPoint *point;
+    GdkPoint point;
 
     g_assert (NEMO_IS_ICON_CONTAINER (container));
     g_assert (NEMO_IS_FILE (data));
@@ -524,9 +524,9 @@
         return FALSE;
     }
 
-    point = nemo_file_get_position (file);
-    position->x = point->x;
-    position->y = point->y;
+    nemo_file_get_position (file, &point);
+    position->x = point.x;
+    position->y = point.y;
     position->scale = 1.0;
 
     return position->x > ICON_UNPOSITIONED_VALUE;
@@ -617,8 +617,11 @@
         for (p = container->details->icons; p != NULL; p = p->next) {
             icon = p->data;
             if (nemo_icon_container_icon_is_positioned (icon) && 
!icon->has_lazy_position) {
+                nemo_icon_container_icon_set_position (container, icon, 
icon->saved_ltr_x, icon->y);
                 placed_icons = g_list_prepend (placed_icons, icon);
             } else {
+                icon->x = 0;
+                icon->y = 0;
                 unplaced_icons = g_list_prepend (unplaced_icons, icon);
             }
         }
@@ -629,7 +632,7 @@
         grid = nemo_centered_placement_grid_new (container, 
container->details->horizontal);
 
         if (grid) {
-            nemo_centered_placement_grid_pre_populate (grid, placed_icons);
+            nemo_centered_placement_grid_pre_populate (grid, placed_icons, 
FALSE);
 
             /* Place unplaced icons in the best locations */
             for (p = unplaced_icons; p != NULL; p = p->next) {
@@ -843,6 +846,9 @@
     NemoIconContainerDetails *details;
     gboolean emit_signal;
     NemoIconPosition position;
+    gint current_monitor;
+
+    current_monitor = nemo_desktop_utils_get_monitor_for_widget (GTK_WIDGET 
(container));
 
     details = container->details;
 
@@ -868,7 +874,7 @@
         position.x = icon->saved_ltr_x;
         position.y = icon->y;
         position.scale = scale;
-        position.monitor = nemo_desktop_utils_get_monitor_for_widget 
(GTK_WIDGET (container));
+        position.monitor = current_monitor;
         g_signal_emit_by_name (container, "icon_position_changed", icon->data, 
&position);
     }
     
@@ -895,6 +901,8 @@
     gboolean embedded_text_needs_loading;
     gboolean has_open_window;
     gint scale_factor;
+    EelIRect old_size, new_size;
+    gint old_width, new_width;
 
     if (icon == NULL) {
         return;
@@ -902,6 +910,8 @@
 
     details = container->details;
 
+    nemo_icon_canvas_item_get_icon_canvas_rectangle (icon->item, &old_size);
+
     /* Get the appropriate images for the file. */
     icon_size = container->details->forced_icon_size;
 
@@ -961,6 +971,19 @@
     nemo_icon_canvas_item_set_image (icon->item, pixbuf);
     nemo_icon_canvas_item_set_attach_points (icon->item, attach_points, 
n_attach_points);
 
+    nemo_icon_canvas_item_get_icon_canvas_rectangle (icon->item, &new_size);
+
+    old_width = old_size.x1 - old_size.x0;
+    new_width = new_size.x1 - new_size.x0;
+
+    if (old_width != 0 && old_width != new_width) {
+        gint diff;
+        diff = (new_width - old_width) / 2;
+        nemo_icon_container_move_icon (container, icon, (int)icon->x - diff, 
(int)icon->y, 1.0, FALSE, TRUE, TRUE);
+        nemo_icon_canvas_item_invalidate_label_size (icon->item);
+        gtk_widget_queue_draw (container);
+    }
+
     /* Let the pixbufs go. */
     g_object_unref (pixbuf);
 
@@ -1074,79 +1097,118 @@
     g_list_free (no_position_icons);
 }
 
+static gboolean
+assign_icon_position (NemoIconContainer *container,
+                      NemoIcon *icon)
+{
+    gboolean have_stored_position;
+    NemoIconPosition position;
+
+    /* Get the stored position. */
+    have_stored_position = FALSE;
+    position.scale = 1.0;
+
+    have_stored_position = get_stored_icon_position (container,
+                                                     icon->data,
+                                                     &position);
+
+    icon->scale = position.scale;
+    if (!container->details->auto_layout) {
+        if (have_stored_position) {
+            nemo_icon_container_icon_set_position (container, icon, 
position.x, position.y);
+            icon->saved_ltr_x = icon->x;
+        } else {
+            return FALSE;
+        }
+    }
+    return TRUE;
+}
+
 static void
 nemo_icon_view_grid_container_finish_adding_new_icons (NemoIconContainer 
*container)
 {
-    GList *p, *new_icons, *no_position_icons;
-    NemoCenteredPlacementGrid *grid;
+    GList *p, *new_icons, *no_position_icons, *semi_position_icons;
     NemoIcon *icon;
+    gint current_monitor;
+
+    current_monitor = nemo_desktop_utils_get_monitor_for_widget (GTK_WIDGET 
(container));
 
     update_layout_constants (container);
     update_visual_selection_state (container);
-    grid = nemo_centered_placement_grid_new (container, 
container->details->horizontal);
-
-    if (grid == NULL) {
-        return;
-    }
-
-    nemo_centered_placement_grid_pre_populate (grid, 
container->details->icons);
 
     new_icons = container->details->new_icons;
-
     container->details->new_icons = NULL;
 
     /* Position most icons (not unpositioned manual-layout icons). */
     new_icons = g_list_reverse (new_icons);
-    no_position_icons = NULL;
+    no_position_icons = semi_position_icons = NULL;
 
     for (p = new_icons; p != NULL; p = p->next) {
-        gboolean have_stored_position;
-        NemoIconPosition position;
-
         icon = p->data;
 
         nemo_icon_container_update_icon (container, icon);
 
-        /* Get the stored position. */
-        have_stored_position = FALSE;
-        position.scale = 1.0;
-        position.monitor = nemo_desktop_utils_get_monitor_for_widget 
(GTK_WIDGET (container));
+        if (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)) {
+            no_position_icons = g_list_prepend (no_position_icons, icon);
+        }
 
-        have_stored_position = get_stored_icon_position (container,
-                                                         icon->data,
-                                                         &position);
+        nemo_icon_container_finish_adding_icon (container, icon);
+    }
+
+    g_list_free (new_icons);
 
-        icon->scale = position.scale;
+    if (semi_position_icons != NULL) {
+        NemoCenteredPlacementGrid *grid;
+        gboolean dummy;
 
-        if (!container->details->auto_layout) {
-            if (have_stored_position) {
-                if (container->details->keep_aligned) {
-                    gint x_nom, y_nom;
-
-                    snap_position (container,
-                                   grid,
-                                   icon,
-                                   position.x, position.y,
-                                   &x_nom, &y_nom);
-
-                    nemo_centered_placement_grid_nominal_to_icon_position 
(grid,
-                                                                           
icon,
-                                                                           
x_nom, y_nom,
-                                                                           
&position.x, &position.y);
-                }
+        g_assert (!container->details->auto_layout);
 
-                nemo_icon_container_icon_set_position (container, icon, 
position.x, position.y);
-                icon->saved_ltr_x = icon->x;
-            } else {
-                no_position_icons = g_list_prepend (no_position_icons, icon);
-            }
+        semi_position_icons = g_list_reverse (semi_position_icons);
+
+        /* This is currently only used on the desktop.
+         * Thus, we pass FALSE for tight, like lay_down_icons_tblr */
+        grid = nemo_centered_placement_grid_new (container, 
container->details->horizontal);
+
+        if (grid == NULL) {
+           return;
         }
 
-        nemo_icon_container_finish_adding_icon (container, icon);
-    }
+        nemo_centered_placement_grid_pre_populate (grid, 
container->details->icons, TRUE);
 
-    g_list_free (new_icons);
-    nemo_centered_placement_grid_free (grid);
+        for (p = semi_position_icons; p != NULL; p = p->next) {
+            NemoIconPosition position;
+            int x, y;
+
+            icon = p->data;
+            x = icon->x;
+            y = icon->y;
+            snap_position (container, grid, icon, x, y, &x, &y);
+
+            nemo_centered_placement_grid_nominal_to_icon_position (grid,
+                                                                   icon,
+                                                                   x, y,
+                                                                   &x, &y);
+
+            nemo_icon_container_icon_set_position (container, icon, x, y);
+
+            position.x = icon->x;
+            position.y = icon->y;
+            position.scale = icon->scale;
+            position.monitor = current_monitor;
+            nemo_centered_placement_grid_mark_icon (grid, icon);
+            store_new_icon_position (container, icon, position);
+
+            /* ensure that next time we run this code, the formerly 
semi-positioned
+             * icons are treated as being positioned. */
+            icon->has_lazy_position = FALSE;
+        }
+
+        nemo_centered_placement_grid_free (grid);
+        g_list_free (semi_position_icons);
+    }
 
     /* Position the unpositioned manual layout icons. */
     if (no_position_icons != NULL) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nemo-3.4.2/utils/gvfs-info.nemo_action 
new/nemo-3.4.3/utils/gvfs-info.nemo_action
--- old/nemo-3.4.2/utils/gvfs-info.nemo_action  1970-01-01 01:00:00.000000000 
+0100
+++ new/nemo-3.4.3/utils/gvfs-info.nemo_action  2017-06-20 15:44:34.000000000 
+0200
@@ -0,0 +1,10 @@
+[Nemo Action]
+
+Active=true
+Name=Report GVFS info on %f
+Comment=Send the results of gvfs-info on %f to stdout
+Exec=gvfs-info %F
+Icon-Name=info
+Selection=s
+Extensions=any;
+EscapeSpaces=true


Reply via email to