]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Merge branch 'unmessify-my-pdfs' - bgo#627443 - Add an 'Open containing folder' command
[evince.git] / shell / ev-window.c
index aad7dee7413a0f1f78681f3ebd61b23cf2810b55..ce43ab072b16a512735556248af9b89f3da9cefb 100644 (file)
@@ -343,6 +343,7 @@ static void     ev_window_media_player_key_pressed      (EvWindow         *windo
 static void     ev_window_update_max_min_scale          (EvWindow         *window);
 #ifdef ENABLE_DBUS
 static void    ev_window_emit_closed                   (EvWindow         *window);
+static void    ev_window_emit_doc_loaded               (EvWindow         *window);
 #endif
 
 static guint ev_window_n_copies = 0;
@@ -1529,6 +1530,9 @@ ev_window_load_job_cb (EvJob *job,
        if (!ev_job_is_failed (job)) {
                ev_document_model_set_document (ev_window->priv->model, document);
 
+#ifdef ENABLE_DBUS
+               ev_window_emit_doc_loaded (ev_window);
+#endif
                setup_chrome_from_metadata (ev_window);
                update_chrome_actions (ev_window);
                setup_document_from_metadata (ev_window);
@@ -6645,6 +6649,35 @@ ev_window_emit_closed (EvWindow *window)
                g_dbus_connection_flush_sync (connection, NULL, NULL);
 }
 
+static void
+ev_window_emit_doc_loaded (EvWindow *window)
+{
+       GDBusConnection *connection;
+       GError          *error = NULL;
+
+       if (window->priv->dbus_object_id <= 0)
+               return;
+
+       connection = ev_application_get_dbus_connection (EV_APP);
+       if (!connection)
+               return;
+
+       g_dbus_connection_emit_signal (connection,
+                                      NULL,
+                                      window->priv->dbus_object_path,
+                                      EV_WINDOW_DBUS_INTERFACE,
+                                      "DocumentLoaded",
+                                      g_variant_new("(s)", window->priv->uri),
+                                      &error);
+       if (error) {
+               g_printerr ("Failed to emit DBus signal DocumentLoaded: %s\n",
+                           error->message);
+               g_error_free (error);
+
+               return;
+       }
+}
+
 static void
 method_call_cb (GDBusConnection       *connection,
                 const gchar           *sender,
@@ -6683,6 +6716,9 @@ static const char introspection_xml[] =
              "<arg type='(ii)' name='source_point' direction='out'/>"
            "</signal>"
             "<signal name='Closed'/>"
+           "<signal name='DocumentLoaded'>"
+             "<arg type='s' name='uri' direction='out'/>"
+           "</signal>"
           "</interface>"
         "</node>";