summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinfirit <[email protected]>2014-12-09 15:14:25 +0100
committerinfirit <[email protected]>2014-12-09 23:02:28 +0100
commit510b42f68f3172ff24d4efc605a0527e0cd29e76 (patch)
tree49d158d5a6c2ccc85cbd9f945398c06ccc98f8c9
parentba7af404335a71a45dc0f39b20e496f32f7eb81d (diff)
downloadatril-510b42f68f3172ff24d4efc605a0527e0cd29e76.tar.bz2
atril-510b42f68f3172ff24d4efc605a0527e0cd29e76.tar.xz
[shell] Send the URI of the input file instead of the filename in SyncSource.
Taken from evince commit: 8b5db2c8c7120a7b4606729fea86247df0d8c462 From: José Aliste <[email protected]> Gnome bug: https://bugzilla.gnome.org/show_bug.cgi?id=632317
-rw-r--r--shell/ev-window.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c
index b5d87e28..96f3ef76 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -6949,6 +6949,8 @@ ev_window_sync_source (EvWindow *window,
GDBusConnection *connection;
GError *error = NULL;
guint32 timestamp;
+ gchar *uri_input;
+ GFile *input_gfile;
if (window->priv->dbus_object_id <= 0)
return;
@@ -6958,17 +6960,40 @@ ev_window_sync_source (EvWindow *window,
return;
timestamp = gtk_get_current_event_time ();
+ if (g_path_is_absolute (link->filename)) {
+ input_gfile = g_file_new_for_path (link->filename);
+ } else {
+ GFile *gfile, *parent_gfile;
+
+ gfile = g_file_new_for_uri (window->priv->uri);
+ parent_gfile = g_file_get_parent (gfile);
+
+ /* parent_gfile should never be NULL */
+ if (parent_gfile == NULL) {
+ g_printerr ("Document URI is '/'\n");
+ return;
+ }
+
+ input_gfile = g_file_get_child (parent_gfile, link->filename);
+ g_object_unref (parent_gfile);
+ g_object_unref (gfile);
+ }
+
+ uri_input = g_file_get_uri (input_gfile);
+ g_object_unref (input_gfile);
+
g_dbus_connection_emit_signal (connection,
NULL,
window->priv->dbus_object_path,
EV_WINDOW_DBUS_INTERFACE,
"SyncSource",
g_variant_new ("(s(ii)u)",
- link->filename,
+ uri_input,
link->line,
link->col,
timestamp),
&error);
+ g_free (uri_input);
if (error) {
g_printerr ("Failed to emit DBus signal SyncSource: %s\n",
error->message);