summaryrefslogtreecommitdiff
path: root/src/nautilus-previewer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nautilus-previewer.c')
-rw-r--r--src/nautilus-previewer.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/nautilus-previewer.c b/src/nautilus-previewer.c
index aef60e615..e2ac3e885 100644
--- a/src/nautilus-previewer.c
+++ b/src/nautilus-previewer.c
@@ -24,6 +24,10 @@
#include "nautilus-previewer.h"
+#include "nautilus-files-view.h"
+#include "nautilus-window.h"
+#include "nautilus-window-slot.h"
+
#define DEBUG_FLAG NAUTILUS_DEBUG_PREVIEWER
#include "nautilus-debug.h"
@@ -94,3 +98,67 @@ nautilus_previewer_call_close (void)
previewer2_method_ready_cb,
NULL);
}
+
+static void
+previewer_selection_event (GDBusConnection *connection,
+ const gchar *sender_name,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *signal_name,
+ GVariant *parameters,
+ gpointer user_data)
+{
+ GApplication *application = g_application_get_default ();
+ GList *l, *windows = gtk_application_get_windows (GTK_APPLICATION (application));
+ NautilusWindow *window = NULL;
+ NautilusWindowSlot *slot;
+ NautilusView *view;
+ GtkDirectionType direction;
+
+ for (l = windows; l != NULL; l = l->next)
+ {
+ if (NAUTILUS_IS_WINDOW (l->data))
+ {
+ window = l->data;
+ break;
+ }
+ }
+
+ if (window == NULL)
+ {
+ return;
+ }
+
+ slot = nautilus_window_get_active_slot (window);
+ view = nautilus_window_slot_get_current_view (slot);
+
+ if (!NAUTILUS_IS_FILES_VIEW (view))
+ {
+ return;
+ }
+
+ g_variant_get (parameters, "(u)", &direction);
+ nautilus_files_view_preview_selection_event (NAUTILUS_FILES_VIEW (view), direction);
+}
+
+guint
+nautilus_previewer_connect_selection_event (GDBusConnection *connection)
+{
+ return g_dbus_connection_signal_subscribe (connection,
+ PREVIEWER_DBUS_NAME,
+ PREVIEWER2_DBUS_IFACE,
+ "SelectionEvent",
+ PREVIEWER_DBUS_PATH,
+ NULL,
+ G_DBUS_SIGNAL_FLAGS_NONE,
+ previewer_selection_event,
+ NULL,
+ NULL);
+}
+
+void
+nautilus_previewer_disconnect_selection_event (GDBusConnection *connection,
+ guint event_id)
+{
+ g_dbus_connection_signal_unsubscribe (connection, event_id);
+}