summaryrefslogtreecommitdiff
path: root/src/nautilus-dbus-manager.c
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2018-08-08 14:07:48 +0200
committerCarlos Soriano <csoriano@gnome.org>2018-08-08 14:07:48 +0200
commit9e9ca30c1355555630f561251acafbbaed3a5afa (patch)
tree7ef0dd48ef9ba57f6b73a4a2b4cdd8fc9f7e6fcf /src/nautilus-dbus-manager.c
parent978dc3ce8e3b2b208e9f0199976325467363bad9 (diff)
downloadnautilus-9e9ca30c1355555630f561251acafbbaed3a5afa.tar.gz
dbus: Implement move operation
Analog to the copy operation.
Diffstat (limited to 'src/nautilus-dbus-manager.c')
-rw-r--r--src/nautilus-dbus-manager.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
index 8d72ecfb9..544c8c0bd 100644
--- a/src/nautilus-dbus-manager.c
+++ b/src/nautilus-dbus-manager.c
@@ -132,9 +132,9 @@ handle_create_folder (NautilusDBusFileOperations *object,
}
static void
-copy_on_finished (GHashTable *debutting_uris,
- gboolean success,
- gpointer callback_data)
+copy_move_on_finished (GHashTable *debutting_uris,
+ gboolean success,
+ gpointer callback_data)
{
g_application_release (g_application_get_default ());
}
@@ -155,7 +155,30 @@ handle_copy_uris (NautilusDBusFileOperations *object,
g_application_hold (g_application_get_default ());
nautilus_file_operations_copy_move (source_files, destination,
- GDK_ACTION_COPY, NULL, copy_on_finished, NULL);
+ GDK_ACTION_COPY, NULL, copy_move_on_finished, NULL);
+
+ g_list_free_full (source_files, g_free);
+ nautilus_dbus_file_operations_complete_copy_uris (object, invocation);
+ return TRUE; /* invocation was handled */
+}
+
+static gboolean
+handle_move_uris (NautilusDBusFileOperations *object,
+ GDBusMethodInvocation *invocation,
+ const gchar **sources,
+ const gchar *destination)
+{
+ GList *source_files = NULL;
+ gint idx;
+
+ for (idx = 0; sources[idx] != NULL; idx++)
+ {
+ source_files = g_list_prepend (source_files, g_strdup (sources[idx]));
+ }
+
+ g_application_hold (g_application_get_default ());
+ nautilus_file_operations_copy_move (source_files, destination,
+ GDK_ACTION_MOVE, NULL, copy_move_on_finished, NULL);
g_list_free_full (source_files, g_free);
nautilus_dbus_file_operations_complete_copy_uris (object, invocation);
@@ -213,6 +236,10 @@ nautilus_dbus_manager_init (NautilusDBusManager *self)
G_CALLBACK (handle_copy_uris),
self);
g_signal_connect (self->file_operations,
+ "handle-move-uris",
+ G_CALLBACK (handle_move_uris),
+ self);
+ g_signal_connect (self->file_operations,
"handle-empty-trash",
G_CALLBACK (handle_empty_trash),
self);