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 - sor.alexei@meowr.ru
+
+- 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 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