[gnome-flashback/nautilus-file-operations2: 1/2] desktop: add support for org.gnome.Nautilus.FileOperations2



commit d8db4c5e3aed6f788d395b21bcfdfa6d4b146771
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Fri Jan 31 17:30:00 2020 +0200

    desktop: add support for org.gnome.Nautilus.FileOperations2

 gnome-flashback/libdesktop/gf-icon-view.c    | 479 +++++++++++++++++++++++----
 gnome-flashback/libdesktop/gf-icon-view.h    |  15 +-
 gnome-flashback/libdesktop/gf-icon.c         |  11 +-
 gnome-flashback/libdesktop/gf-monitor-view.c |  20 +-
 4 files changed, 447 insertions(+), 78 deletions(-)
---
diff --git a/gnome-flashback/libdesktop/gf-icon-view.c b/gnome-flashback/libdesktop/gf-icon-view.c
index 11f4749..7d0f37f 100644
--- a/gnome-flashback/libdesktop/gf-icon-view.c
+++ b/gnome-flashback/libdesktop/gf-icon-view.c
@@ -18,10 +18,13 @@
 #include "config.h"
 #include "gf-icon-view.h"
 
+#include <gdk/gdkx.h>
 #include <glib/gi18n.h>
 
+#include "dbus/gf-fd-dbus-introspectable-gen.h"
 #include "dbus/gf-file-manager-gen.h"
 #include "dbus/gf-nautilus-gen.h"
+#include "dbus/gf-nautilus2-gen.h"
 #include "gf-create-folder-dialog.h"
 #include "gf-desktop-enum-types.h"
 #include "gf-desktop-enums.h"
@@ -78,6 +81,7 @@ struct _GfIconView
   GList              *rubberband_icons;
 
   GfNautilusGen      *nautilus;
+  GfNautilus2Gen     *nautilus2;
   GfFileManagerGen   *file_manager;
 
   GtkWidget          *create_folder_dialog;
@@ -109,6 +113,39 @@ static guint view_signals[LAST_SIGNAL] = { 0 };
 
 G_DEFINE_TYPE (GfIconView, gf_icon_view, GTK_TYPE_EVENT_BOX)
 
+static GVariant *
+get_platform_data (GfIconView *self,
+                   guint32     timestamp)
+{
+  GVariantBuilder builder;
+  GtkWidget *toplevel;
+  GdkWindow *window;
+  char *parent_handle;
+
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+
+  toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
+  window = gtk_widget_get_window (toplevel);
+  parent_handle = g_strdup_printf ("x11:%lx", gdk_x11_window_get_xid (window));
+
+  g_variant_builder_add (&builder,
+                         "{sv}",
+                         "parent-handle",
+                         g_variant_new_take_string (parent_handle));
+
+  g_variant_builder_add (&builder,
+                         "{sv}",
+                         "timestamp",
+                         g_variant_new_uint32 (timestamp));
+
+  g_variant_builder_add (&builder,
+                         "{sv}",
+                         "window-position",
+                         g_variant_new_string ("center"));
+
+  return g_variant_builder_end (&builder);
+}
+
 static char *
 build_attributes_list (const char *first,
                        ...)
@@ -516,7 +553,26 @@ empty_trash_cb (GObject      *object,
   if (error != NULL)
     {
       if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
-        g_warning ("Error creating new folder: %s", error->message);
+        g_warning ("Error emptying trash: %s", error->message);
+      g_error_free (error);
+    }
+}
+
+static void
+empty_trash2_cb (GObject      *object,
+                 GAsyncResult *res,
+                 gpointer      user_data)
+{
+  GError *error;
+
+  error = NULL;
+  gf_nautilus2_gen_call_empty_trash_finish (GF_NAUTILUS2_GEN (object),
+                                            res, &error);
+
+  if (error != NULL)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        g_warning ("Error emptying trash: %s", error->message);
       g_error_free (error);
     }
 }
@@ -540,6 +596,25 @@ trash_files_cb (GObject      *object,
     }
 }
 
+static void
+trash_files2_cb (GObject      *object,
+                 GAsyncResult *res,
+                 gpointer      user_data)
+{
+  GError *error;
+
+  error = NULL;
+  gf_nautilus2_gen_call_trash_files_finish (GF_NAUTILUS2_GEN (object),
+                                            res, &error);
+
+  if (error != NULL)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        g_warning ("Error moving files to trash: %s", error->message);
+      g_error_free (error);
+    }
+}
+
 static void
 rename_file_cb (GObject      *object,
                 GAsyncResult *res,
@@ -559,6 +634,25 @@ rename_file_cb (GObject      *object,
     }
 }
 
+static void
+rename_file2_cb (GObject      *object,
+                 GAsyncResult *res,
+                 gpointer      user_data)
+{
+  GError *error;
+
+  error = NULL;
+  gf_nautilus2_gen_call_rename_file_finish (GF_NAUTILUS2_GEN (object),
+                                            res, &error);
+
+  if (error != NULL)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        g_warning ("Error renaming file: %s", error->message);
+      g_error_free (error);
+    }
+}
+
 static void
 copy_uris_cb (GObject      *object,
               GAsyncResult *res,
@@ -578,6 +672,25 @@ copy_uris_cb (GObject      *object,
     }
 }
 
+static void
+copy_uris2_cb (GObject      *object,
+               GAsyncResult *res,
+               gpointer      user_data)
+{
+  GError *error;
+
+  error = NULL;
+  gf_nautilus2_gen_call_copy_uris_finish (GF_NAUTILUS2_GEN (object),
+                                          res, &error);
+
+  if (error != NULL)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        g_warning ("Error copying uris: %s", error->message);
+      g_error_free (error);
+    }
+}
+
 static void
 move_uris_cb (GObject      *object,
               GAsyncResult *res,
@@ -597,6 +710,25 @@ move_uris_cb (GObject      *object,
     }
 }
 
+static void
+move_uris2_cb (GObject      *object,
+               GAsyncResult *res,
+               gpointer      user_data)
+{
+  GError *error;
+
+  error = NULL;
+  gf_nautilus2_gen_call_move_uris_finish (GF_NAUTILUS2_GEN (object),
+                                          res, &error);
+
+  if (error != NULL)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        g_warning ("Error moving uris: %s", error->message);
+      g_error_free (error);
+    }
+}
+
 static GfIconInfo *
 create_icon_info (GfIconView *self,
                   GtkWidget  *icon)
@@ -852,6 +984,25 @@ create_folder_cb (GObject      *object,
     }
 }
 
+static void
+create_folder2_cb (GObject      *object,
+                   GAsyncResult *res,
+                   gpointer      user_data)
+{
+  GError *error;
+
+  error = NULL;
+  gf_nautilus2_gen_call_create_folder_finish (GF_NAUTILUS2_GEN (object),
+                                              res, &error);
+
+  if (error != NULL)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        g_warning ("Error creating new folder: %s", error->message);
+      g_error_free (error);
+    }
+}
+
 static void
 create_folder_dialog_response_cb (GtkDialog  *dialog,
                                   gint        response_id,
@@ -874,10 +1025,31 @@ create_folder_dialog_response_cb (GtkDialog  *dialog,
   uri = g_file_get_uri (new_file);
   g_object_unref (new_file);
 
-  gf_nautilus_gen_call_create_folder (self->nautilus, uri,
-                                      self->cancellable,
-                                      create_folder_cb,
-                                      NULL);
+  if (self->nautilus2 != NULL)
+    {
+      guint32 timestamp;
+
+      timestamp = gtk_get_current_event_time ();
+
+      gf_nautilus2_gen_call_create_folder (self->nautilus2,
+                                           uri,
+                                           get_platform_data (self, timestamp),
+                                           self->cancellable,
+                                           create_folder2_cb,
+                                           NULL);
+    }
+  else if (self->nautilus != NULL)
+    {
+      gf_nautilus_gen_call_create_folder (self->nautilus,
+                                          uri,
+                                          self->cancellable,
+                                          create_folder_cb,
+                                          NULL);
+    }
+  else
+    {
+      g_assert_not_reached ();
+    }
 
   gtk_widget_destroy (GTK_WIDGET (dialog));
   g_free (uri);
@@ -896,7 +1068,8 @@ new_folder_cb (GtkMenuItem *item,
 {
   GtkWidget *dialog;
 
-  if (self->nautilus == NULL)
+  if (self->nautilus2 == NULL &&
+      self->nautilus == NULL)
     return;
 
   if (self->create_folder_dialog != NULL)
@@ -1648,7 +1821,7 @@ enumerate_desktop (GfIconView *self)
 }
 
 static void
-nautilus_ready_cb (GObject     *object,
+nautilus_ready_cb (GObject      *object,
                    GAsyncResult *res,
                    gpointer      user_data)
 
@@ -1673,6 +1846,133 @@ nautilus_ready_cb (GObject     *object,
   self->nautilus = nautilus;
 }
 
+static void
+nautilus2_ready_cb (GObject      *object,
+                    GAsyncResult *res,
+                    gpointer      user_data)
+
+{
+  GError *error;
+  GfNautilus2Gen *nautilus2;
+  GfIconView *self;
+
+  error = NULL;
+  nautilus2 = gf_nautilus2_gen_proxy_new_for_bus_finish (res, &error);
+
+  if (error != NULL)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        g_warning ("%s", error->message);
+
+      g_error_free (error);
+      return;
+    }
+
+  self = GF_ICON_VIEW (user_data);
+  self->nautilus2 = nautilus2;
+}
+
+static void
+introspect_cb (GObject      *object,
+               GAsyncResult *res,
+               gpointer      user_data)
+{
+  GError *error;
+  char *xml_data;
+  GfIconView *self;
+  GDBusNodeInfo *info;
+  gboolean file_operations2;
+  int i;
+
+  xml_data = NULL;
+  error = NULL;
+
+  gf_fd_dbus_introspectable_gen_call_introspect_finish (GF_FD_DBUS_INTROSPECTABLE_GEN (object),
+                                                        &xml_data,
+                                                        res,
+                                                        &error);
+
+  if (error != NULL)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        g_warning ("%s", error->message);
+
+      g_error_free (error);
+      return;
+    }
+
+  self = GF_ICON_VIEW (user_data);
+
+  info = g_dbus_node_info_new_for_xml (xml_data, NULL);
+  g_free (xml_data);
+
+  file_operations2 = FALSE;
+  for (i = 0; info->interfaces[i] != NULL; i++)
+    {
+      if (g_strcmp0 (info->interfaces[i]->name, "org.gnome.Nautilus.FileOperations2") == 0)
+        {
+          file_operations2 = TRUE;
+          break;
+        }
+    }
+
+  if (file_operations2)
+    {
+      gf_nautilus2_gen_proxy_new_for_bus (G_BUS_TYPE_SESSION,
+                                          G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION,
+                                          "org.gnome.Nautilus",
+                                          "/org/gnome/Nautilus/FileOperations2",
+                                          self->cancellable,
+                                          nautilus2_ready_cb,
+                                          self);
+    }
+  else
+    {
+      gf_nautilus_gen_proxy_new_for_bus (G_BUS_TYPE_SESSION,
+                                         G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION,
+                                         "org.gnome.Nautilus",
+                                         "/org/gnome/Nautilus",
+                                         self->cancellable,
+                                         nautilus_ready_cb,
+                                         self);
+    }
+
+  g_dbus_node_info_unref (info);
+}
+
+static void
+introspectable_ready_cb (GObject      *object,
+                         GAsyncResult *res,
+                         gpointer      user_data)
+
+{
+  GError *error;
+  GfFdDBusIntrospectableGen *introspectable;
+  GfIconView *self;
+
+  error = NULL;
+  introspectable = gf_fd_dbus_introspectable_gen_proxy_new_for_bus_finish (res,
+                                                                           &error);
+
+  if (error != NULL)
+    {
+      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+        g_warning ("%s", error->message);
+
+      g_error_free (error);
+      return;
+    }
+
+  self = GF_ICON_VIEW (user_data);
+
+  gf_fd_dbus_introspectable_gen_call_introspect (introspectable,
+                                                 self->cancellable,
+                                                 introspect_cb,
+                                                 self);
+
+  g_object_unref (introspectable);
+}
+
 static void
 file_manager_ready_cb (GObject     *object,
                        GAsyncResult *res,
@@ -2017,7 +2317,9 @@ trash_cb (GfIconView *self,
   if (uris == NULL)
     return;
 
-  gf_icon_view_move_to_trash (self, (const char * const *) uris);
+  gf_icon_view_move_to_trash (self,
+                              (const char * const *) uris,
+                              gtk_get_current_event_time ());
   g_strfreev (uris);
 }
 
@@ -2388,6 +2690,7 @@ gf_icon_view_dispose (GObject *object)
   g_clear_pointer (&self->rubberband_icons, g_list_free);
 
   g_clear_object (&self->nautilus);
+  g_clear_object (&self->nautilus2);
   g_clear_object (&self->file_manager);
 
   g_clear_pointer (&self->create_folder_dialog, gtk_widget_destroy);
@@ -2833,13 +3136,13 @@ gf_icon_view_init (GfIconView *self)
 
   self->cancellable = g_cancellable_new ();
 
-  gf_nautilus_gen_proxy_new_for_bus (G_BUS_TYPE_SESSION,
-                                     G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION,
-                                     "org.gnome.Nautilus",
-                                     "/org/gnome/Nautilus",
-                                     self->cancellable,
-                                     nautilus_ready_cb,
-                                     self);
+  gf_fd_dbus_introspectable_gen_proxy_new_for_bus (G_BUS_TYPE_SESSION,
+                                                   G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION,
+                                                   "org.gnome.Nautilus",
+                                                   "/org/gnome/Nautilus/FileOperations2",
+                                                   self->cancellable,
+                                                   introspectable_ready_cb,
+                                                   self);
 
   gf_file_manager_gen_proxy_new_for_bus (G_BUS_TYPE_SESSION,
                                          G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION,
@@ -2988,15 +3291,24 @@ gf_icon_view_show_item_properties (GfIconView         *self,
 }
 
 void
-gf_icon_view_empty_trash (GfIconView  *self)
+gf_icon_view_empty_trash (GfIconView *self,
+                          guint32     timestamp)
 {
-  if (self->nautilus == NULL)
-    return;
-
-  gf_nautilus_gen_call_empty_trash (self->nautilus,
-                                    self->cancellable,
-                                    empty_trash_cb,
-                                    NULL);
+  if (self->nautilus2 != NULL)
+    {
+      gf_nautilus2_gen_call_empty_trash (self->nautilus2,
+                                         get_platform_data (self, timestamp),
+                                         self->cancellable,
+                                         empty_trash2_cb,
+                                         NULL);
+    }
+  else if (self->nautilus != NULL)
+    {
+      gf_nautilus_gen_call_empty_trash (self->nautilus,
+                                        self->cancellable,
+                                        empty_trash_cb,
+                                        NULL);
+    }
 }
 
 gboolean
@@ -3084,62 +3396,105 @@ gf_icon_view_validate_new_name (GfIconView  *self,
 
 void
 gf_icon_view_move_to_trash (GfIconView         *self,
-                            const char * const *uris)
+                            const char * const *uris,
+                            guint32             timestamp)
 {
-  if (self->nautilus == NULL)
-    return;
-
-  gf_nautilus_gen_call_trash_files (self->nautilus,
-                                    uris,
-                                    self->cancellable,
-                                    trash_files_cb,
-                                    NULL);
+  if (self->nautilus2 != NULL)
+    {
+      gf_nautilus2_gen_call_trash_files (self->nautilus2,
+                                         uris,
+                                         get_platform_data (self, timestamp),
+                                         self->cancellable,
+                                         trash_files2_cb,
+                                         NULL);
+    }
+  else if (self->nautilus != NULL)
+    {
+      gf_nautilus_gen_call_trash_files (self->nautilus,
+                                        uris,
+                                        self->cancellable,
+                                        trash_files_cb,
+                                        NULL);
+    }
 }
 
 void
 gf_icon_view_rename_file (GfIconView *self,
                           const char *uri,
-                          const char *new_name)
+                          const char *new_name,
+                          guint32     timestamp)
 {
-  if (self->nautilus == NULL)
-    return;
-
-  gf_nautilus_gen_call_rename_file (self->nautilus,
-                                    uri,
-                                    new_name,
-                                    self->cancellable,
-                                    rename_file_cb,
-                                    NULL);
+  if (self->nautilus2 != NULL)
+    {
+      gf_nautilus2_gen_call_rename_file (self->nautilus2,
+                                         uri,
+                                         new_name,
+                                         get_platform_data (self, timestamp),
+                                         self->cancellable,
+                                         rename_file2_cb,
+                                         NULL);
+    }
+  else if (self->nautilus != NULL)
+    {
+      gf_nautilus_gen_call_rename_file (self->nautilus,
+                                        uri,
+                                        new_name,
+                                        self->cancellable,
+                                        rename_file_cb,
+                                        NULL);
+    }
 }
 
 void
 gf_icon_view_copy_uris (GfIconView         *self,
                         const char * const *uris,
-                        const char         *destination)
+                        const char         *destination,
+                        guint32             timestamp)
 {
-  if (self->nautilus == NULL)
-    return;
-
-  gf_nautilus_gen_call_copy_uris (self->nautilus,
-                                  uris,
-                                  destination,
-                                  self->cancellable,
-                                  copy_uris_cb,
-                                  NULL);
+  if (self->nautilus2 != NULL)
+    {
+      gf_nautilus2_gen_call_copy_uris (self->nautilus2,
+                                       uris,
+                                       destination,
+                                       get_platform_data (self, timestamp),
+                                       self->cancellable,
+                                       copy_uris2_cb,
+                                       NULL);
+    }
+  else if (self->nautilus != NULL)
+    {
+      gf_nautilus_gen_call_copy_uris (self->nautilus,
+                                      uris,
+                                      destination,
+                                      self->cancellable,
+                                      copy_uris_cb,
+                                      NULL);
+    }
 }
 
 void
 gf_icon_view_move_uris (GfIconView         *self,
                         const char * const *uris,
-                        const char         *destination)
+                        const char         *destination,
+                        guint32             timestamp)
 {
-  if (self->nautilus == NULL)
-    return;
-
-  gf_nautilus_gen_call_move_uris (self->nautilus,
-                                  uris,
-                                  destination,
-                                  self->cancellable,
-                                  move_uris_cb,
-                                  NULL);
+  if (self->nautilus2 != NULL)
+    {
+      gf_nautilus2_gen_call_move_uris (self->nautilus2,
+                                       uris,
+                                       destination,
+                                       get_platform_data (self, timestamp),
+                                       self->cancellable,
+                                       move_uris2_cb,
+                                       NULL);
+    }
+  else if (self->nautilus != NULL)
+    {
+      gf_nautilus_gen_call_move_uris (self->nautilus,
+                                      uris,
+                                      destination,
+                                      self->cancellable,
+                                      move_uris_cb,
+                                      NULL);
+    }
 }
diff --git a/gnome-flashback/libdesktop/gf-icon-view.h b/gnome-flashback/libdesktop/gf-icon-view.h
index 8d3be92..697ee00 100644
--- a/gnome-flashback/libdesktop/gf-icon-view.h
+++ b/gnome-flashback/libdesktop/gf-icon-view.h
@@ -47,7 +47,8 @@ GList              *gf_icon_view_get_selected_icons       (GfIconView          *
 void                gf_icon_view_show_item_properties     (GfIconView          *self,
                                                            const char * const  *uris);
 
-void                gf_icon_view_empty_trash              (GfIconView          *self);
+void                gf_icon_view_empty_trash              (GfIconView          *self,
+                                                           guint32              timestamp);
 
 gboolean            gf_icon_view_validate_new_name        (GfIconView          *self,
                                                            GFileType            file_type,
@@ -55,19 +56,23 @@ gboolean            gf_icon_view_validate_new_name        (GfIconView          *
                                                            char               **message);
 
 void                gf_icon_view_move_to_trash            (GfIconView          *self,
-                                                           const char * const  *uris);
+                                                           const char * const  *uris,
+                                                           guint32              timestamp);
 
 void                gf_icon_view_rename_file              (GfIconView          *self,
                                                            const char          *uri,
-                                                           const char          *new_name);
+                                                           const char          *new_name,
+                                                           guint32              timestamp);
 
 void                gf_icon_view_copy_uris                (GfIconView          *self,
                                                            const char * const  *uris,
-                                                           const char          *destination);
+                                                           const char          *destination,
+                                                           guint32              timestamp);
 
 void                gf_icon_view_move_uris                (GfIconView          *self,
                                                            const char * const  *uris,
-                                                           const char          *destination);
+                                                           const char          *destination,
+                                                           guint32              timestamp);
 
 G_END_DECLS
 
diff --git a/gnome-flashback/libdesktop/gf-icon.c b/gnome-flashback/libdesktop/gf-icon.c
index c081307..77c6fcc 100644
--- a/gnome-flashback/libdesktop/gf-icon.c
+++ b/gnome-flashback/libdesktop/gf-icon.c
@@ -385,7 +385,10 @@ rename_do_rename_cb (GfRenamePopover *popover,
       char *uri;
 
       uri = g_file_get_uri (priv->file);
-      gf_icon_view_rename_file (priv->icon_view, uri, new_name);
+      gf_icon_view_rename_file (priv->icon_view,
+                                uri,
+                                new_name,
+                                gtk_get_current_event_time ());
       g_free (uri);
     }
 
@@ -431,7 +434,9 @@ move_to_trash_cb (GtkMenuItem *item,
   if (uris == NULL)
     return;
 
-  gf_icon_view_move_to_trash (priv->icon_view, (const char * const *) uris);
+  gf_icon_view_move_to_trash (priv->icon_view,
+                              (const char * const *) uris,
+                              gtk_get_current_event_time ());
   g_strfreev (uris);
 }
 
@@ -475,7 +480,7 @@ empty_trash_cb (GtkMenuItem *item,
 
   priv = gf_icon_get_instance_private (self);
 
-  gf_icon_view_empty_trash (priv->icon_view);
+  gf_icon_view_empty_trash (priv->icon_view, gtk_get_current_event_time ());
 }
 
 static void
diff --git a/gnome-flashback/libdesktop/gf-monitor-view.c b/gnome-flashback/libdesktop/gf-monitor-view.c
index c9e3d87..bdf76a1 100644
--- a/gnome-flashback/libdesktop/gf-monitor-view.c
+++ b/gnome-flashback/libdesktop/gf-monitor-view.c
@@ -456,7 +456,8 @@ get_uris_from_gnome_icon_list (GfMonitorView *self,
 
 static void
 copy_to_desktop (GfMonitorView  *self,
-                 char          **uris)
+                 char          **uris,
+                 guint           time)
 {
   char *desktop_uri;
 
@@ -464,14 +465,16 @@ copy_to_desktop (GfMonitorView  *self,
 
   gf_icon_view_copy_uris (self->icon_view,
                           (const char * const *) uris,
-                          desktop_uri);
+                          desktop_uri,
+                          time);
 
   g_free (desktop_uri);
 }
 
 static void
 move_to_desktop (GfMonitorView  *self,
-                 char          **uris)
+                 char          **uris,
+                 guint           time)
 {
   char *desktop_uri;
 
@@ -479,7 +482,8 @@ move_to_desktop (GfMonitorView  *self,
 
   gf_icon_view_move_uris (self->icon_view,
                           (const char * const *) uris,
-                          desktop_uri);
+                          desktop_uri,
+                          time);
 
   g_free (desktop_uri);
 }
@@ -582,7 +586,7 @@ drag_data_received_cb (GtkWidget        *widget,
 
                   uris = get_uris_from_icon_list (self, icon);
 
-                  copy_to_desktop (self, uris);
+                  copy_to_desktop (self, uris, time);
                   g_strfreev (uris);
 
                   success = TRUE;
@@ -603,7 +607,7 @@ drag_data_received_cb (GtkWidget        *widget,
 
                   uris = get_uris_from_gnome_icon_list (self, selection_data);
 
-                  move_to_desktop (self, uris);
+                  move_to_desktop (self, uris, time);
                   g_strfreev (uris);
 
                   success = TRUE;
@@ -618,7 +622,7 @@ drag_data_received_cb (GtkWidget        *widget,
 
                   uris = get_uris_from_gnome_icon_list (self, selection_data);
 
-                  copy_to_desktop (self, uris);
+                  copy_to_desktop (self, uris, time);
                   g_strfreev (uris);
 
                   success = TRUE;
@@ -635,7 +639,7 @@ drag_data_received_cb (GtkWidget        *widget,
 
                   uris = gtk_selection_data_get_uris (data);
 
-                  copy_to_desktop (self, uris);
+                  copy_to_desktop (self, uris, time);
                   g_strfreev (uris);
 
                   success = TRUE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]