]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-application.c
Updated Slovenian translation
[evince.git] / shell / ev-application.c
index 0c65eec286f809d040d850b7d7ba2f240c99fb35..2fc9030e7832abc309ebd2c6c0e1dd0d347b520e 100644 (file)
@@ -283,18 +283,26 @@ ev_spawn (const char     *uri,
                break;
        }
 
-       g_string_append_printf (cmd, " %s", uri);
-
        cmdline = g_string_free (cmd, FALSE);
        app = g_app_info_create_from_commandline (cmdline, NULL, 0, &error);
 
        if (app != NULL) {
+                GList uri_list;
+
                ctx = gdk_display_get_app_launch_context (gdk_screen_get_display (screen));
                gdk_app_launch_context_set_screen (ctx, screen);
                gdk_app_launch_context_set_timestamp (ctx, timestamp);
 
-               g_app_info_launch (app, NULL,
-                                  G_APP_LAUNCH_CONTEXT (ctx), &error);
+                /* 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,
+                                        G_APP_LAUNCH_CONTEXT (ctx), &error);
 
                g_object_unref (app);
                g_object_unref (ctx);