summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkshay Gupta <kitallis@gmail.com>2011-12-06 15:08:08 -0600
committerFederico Mena Quintero <federico@gnome.org>2011-12-06 17:48:00 -0600
commit08b590a4c6014d6a91a525b3183d3266788703a4 (patch)
tree1345c390bb6d9ba7e7c310bbcf863ec098536ed9
parente7dc7a27001dcadb8f7a2cafb26bbb3be724d801 (diff)
downloadnautilus-08b590a4c6014d6a91a525b3183d3266788703a4.tar.gz
Implement ShowItems()
Unfortunately g_application_open() and NautilusApplication don't actually use the startup_id. We will have to pass this in another fashion later.
-rw-r--r--src/nautilus-freedesktop-dbus.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/nautilus-freedesktop-dbus.c b/src/nautilus-freedesktop-dbus.c
index 087350fe1..99c1bea60 100644
--- a/src/nautilus-freedesktop-dbus.c
+++ b/src/nautilus-freedesktop-dbus.c
@@ -44,6 +44,35 @@ static GDBusObjectManagerServer *object_manager;
/* Our DBus implementation skeleton */
static NautilusFreedesktopFileManager1 *skeleton;
+
+static gboolean
+skeleton_handle_show_items_cb (NautilusFreedesktopFileManager1 *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *const *uris,
+ const gchar *startup_id)
+{
+ int i;
+
+ for (i = 0; uris[i] != NULL; i++) {
+ GFile *file;
+ GFile *files[1];
+
+ file = g_file_new_for_uri (uris[i]);
+ files[0] = file;
+
+ /* FIXME: we are not using the startup_id. This is not
+ * what g_application_open() expects, and neither does
+ * NautilusApplication internally.
+ */
+ g_application_open (G_APPLICATION (application), files, 1, "");
+ g_object_unref (file);
+ }
+
+ nautilus_freedesktop_file_manager1_complete_show_items (object, invocation);
+ return TRUE;
+}
+
+
static void
bus_acquired_cb (GDBusConnection *conn,
const gchar *name,
@@ -56,6 +85,9 @@ bus_acquired_cb (GDBusConnection *conn,
skeleton = nautilus_freedesktop_file_manager1_skeleton_new ();
+ g_signal_connect (skeleton, "handle-show-items",
+ G_CALLBACK (skeleton_handle_show_items_cb), NULL);
+
g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (skeleton), connection, "/org/freedesktop/FileManager1", NULL);
g_dbus_object_manager_server_set_connection (object_manager, connection);