]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-application.c
Fix indentation
[evince.git] / shell / ev-application.c
index 21f7a3a285dfa1420ae25d70f2211e8f0053d9f3..600880a1e6ad86dd2d8eff036493fcfcc07505da 100644 (file)
@@ -293,6 +293,12 @@ ev_spawn (const char     *uri,
                gdk_app_launch_context_set_screen (ctx, screen);
                gdk_app_launch_context_set_timestamp (ctx, timestamp);
 
+                /* Some URIs can be changed when passed through a GFile
+                 * (for instance unsupported uris with strange formats like mailto:),
+                 * so if you have a textual uri you want to pass in as argument,
+                 * consider using g_app_info_launch_uris() instead.
+                 * See https://bugzilla.gnome.org/show_bug.cgi?id=644604
+                 */
                 uri_list.data = (gchar *)uri;
                 uri_list.prev = uri_list.next = NULL;
                g_app_info_launch_uris (app, &uri_list,
@@ -463,9 +469,17 @@ on_register_uri_cb (GObject      *source_object,
                                "screen",
                                g_variant_new_int32 (gdk_screen_get_number (data->screen)));
        if (data->dest) {
-                g_variant_builder_add (&builder, "{sv}",
-                                       "page-label",
-                                       g_variant_new_string (ev_link_dest_get_page_label (data->dest)));
+                const gchar *page_label = ev_link_dest_get_page_label (data->dest);
+
+                if (page_label) {
+                        g_variant_builder_add (&builder, "{sv}",
+                                               "page-label",
+                                               g_variant_new_string (page_label));
+                } else {
+                        g_variant_builder_add (&builder, "{sv}",
+                                               "page-index",
+                                               g_variant_new_uint32 (ev_link_dest_get_page (data->dest)));
+                }
        }
        if (data->search_string) {
                 g_variant_builder_add (&builder, "{sv}",
@@ -764,12 +778,14 @@ method_call_cb (GDBusConnection       *connection,
                while (g_variant_iter_loop (iter, "{&sv}", &key, &value)) {
                        if (strcmp (key, "display") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_STRING) {
                                display = ev_display_open_if_needed (g_variant_get_string (value, NULL));
-                       } else if (strcmp (key, "screen") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_STRING) {
+                       } else if (strcmp (key, "screen") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_INT32) {
                                screen_number = g_variant_get_int32 (value);
                        } else if (strcmp (key, "mode") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_UINT32) {
-                       mode = g_variant_get_uint32 (value);
+                                mode = g_variant_get_uint32 (value);
                        } else if (strcmp (key, "page-label") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_STRING) {
                                dest = ev_link_dest_new_page_label (g_variant_get_string (value, NULL));
+                        } else if (strcmp (key, "page-index") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_UINT32) {
+                                dest = ev_link_dest_new_page (g_variant_get_uint32 (value));
                        } else if (strcmp (key, "find-string") == 0 && g_variant_classify (value) == G_VARIANT_CLASS_STRING) {
                                search_string = g_variant_get_string (value, NULL);
                        }