X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-window.c;h=32616818f3bdb3f6227822352029cccb5db65b8a;hb=e769474337c9a6ffdaed2327056e8de2f7ca9ee4;hp=aad7dee7413a0f1f78681f3ebd61b23cf2810b55;hpb=71cc5e5d293c22041da7dcc0abd465005975851e;p=evince.git
diff --git a/shell/ev-window.c b/shell/ev-window.c
index aad7dee7..32616818 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -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;
@@ -894,6 +895,13 @@ view_selection_changed_cb (EvView *view,
ev_view_get_has_selection (view));
}
+static void
+view_layers_changed_cb (EvView *view,
+ EvWindow *window)
+{
+ ev_sidebar_layers_update_layers_state (EV_SIDEBAR_LAYERS (window->priv->sidebar_layers));
+}
+
static void
ev_window_page_changed_cb (EvWindow *ev_window,
gint old_page,
@@ -1529,6 +1537,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);
@@ -4200,7 +4211,6 @@ ev_window_cmd_edit_toolbar (GtkAction *action, EvWindow *ev_window)
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)), 5);
gtk_box_set_spacing (GTK_BOX (content_area), 2);
- gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 400);
toolbar = EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar);
@@ -6585,6 +6595,7 @@ ev_window_sync_source (EvWindow *window,
{
GDBusConnection *connection;
GError *error = NULL;
+ guint32 timestamp;
if (window->priv->dbus_object_id <= 0)
return;
@@ -6593,15 +6604,17 @@ ev_window_sync_source (EvWindow *window,
if (!connection)
return;
+ timestamp = gtk_get_current_event_time ();
g_dbus_connection_emit_signal (connection,
NULL,
window->priv->dbus_object_path,
EV_WINDOW_DBUS_INTERFACE,
"SyncSource",
- g_variant_new ("(s(ii))",
+ g_variant_new ("(s(ii)u)",
link->filename,
link->line,
- link->col),
+ link->col,
+ timestamp),
&error);
if (error) {
g_printerr ("Failed to emit DBus signal SyncSource: %s\n",
@@ -6645,6 +6658,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,
@@ -6662,10 +6704,11 @@ method_call_cb (GDBusConnection *connection,
if (window->priv->document && ev_document_has_synctex (window->priv->document)) {
EvSourceLink link;
+ guint32 timestamp;
- g_variant_get (parameters, "(&s(ii))", &link.filename, &link.line, &link.col);
+ g_variant_get (parameters, "(&s(ii)u)", &link.filename, &link.line, &link.col, ×tamp);
ev_view_highlight_forward_search (EV_VIEW (window->priv->view), &link);
- gtk_window_present (GTK_WINDOW (window));
+ gtk_window_present_with_time (GTK_WINDOW (window), timestamp);
}
g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
@@ -6677,12 +6720,17 @@ static const char introspection_xml[] =
""
""
""
+ ""
""
""
""
""
+ ""
""
""
+ ""
+ ""
+ ""
""
"";
@@ -6843,7 +6891,7 @@ ev_window_init (EvWindow *ev_window)
gtk_widget_show (ev_window->priv->toolbar);
/* Add the main area */
- ev_window->priv->hpaned = gtk_hpaned_new ();
+ ev_window->priv->hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
g_signal_connect (ev_window->priv->hpaned,
"notify::position",
G_CALLBACK (ev_window_sidebar_position_change_cb),
@@ -6971,6 +7019,9 @@ ev_window_init (EvWindow *ev_window)
g_signal_connect_object (ev_window->priv->view, "annot-added",
G_CALLBACK (view_annot_added),
ev_window, 0);
+ g_signal_connect_object (ev_window->priv->view, "layers-changed",
+ G_CALLBACK (view_layers_changed_cb),
+ ev_window, 0);
#ifdef ENABLE_DBUS
g_signal_connect_swapped (ev_window->priv->view, "sync-source",
G_CALLBACK (ev_window_sync_source),