Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2008-10-04 17:20:23 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2008-10-04 17:20:23 (GMT)
commitc55919def7a3cea9865fa9dfa133de6852d0a433 (patch)
treefd4e4be401e14a76fd2cd3b03302f92eb7152bc7 /shell
parentc9b5a4990d3ca803f98423f96f485a4f989af342 (diff)
Fix launching external applications for launch actions which seems to be
2008-10-04 Carlos Garcia Campos <carlosgc@gnome.org> * shell/ev-window.c: (launch_action): Fix launching external applications for launch actions which seems to be broken since the gio port. Fixes bug #554500. svn path=/trunk/; revision=3213
Diffstat (limited to 'shell')
-rw-r--r--shell/ev-window.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c
index fc8cc8d..75120ba 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -4833,12 +4833,11 @@ static void
launch_action (EvWindow *window, EvLinkAction *action)
{
const char *filename = ev_link_action_get_filename (action);
- const char *content_type;
GAppInfo *app_info;
- GFileInfo *file_info;
GFile *file;
- GList *file_list = NULL;
-
+ GList file_list = {NULL};
+ GError *error = NULL;
+
if (filename == NULL)
return;
@@ -4846,34 +4845,35 @@ launch_action (EvWindow *window, EvLinkAction *action)
file = g_file_new_for_path (filename);
} else {
GFile *base_file;
+ gchar *dir;
+
+ dir = g_path_get_dirname (window->priv->uri);
+ base_file = g_file_new_for_uri (dir);
+ g_free (dir);
- base_file = g_file_new_for_uri (window->priv->uri);
- file = g_file_resolve_relative_path (base_file,
- filename);
-
+ file = g_file_resolve_relative_path (base_file, filename);
g_object_unref (base_file);
}
-
- file_info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
- 0, NULL, NULL);
- if (file_info == NULL) {
+
+ app_info = g_file_query_default_handler (file, NULL, &error);
+ if (!app_info) {
+ /* FIXME: use ev_window_error_message */
+ g_warning ("%s", error->message);
g_object_unref (file);
+
return;
}
- content_type = g_file_info_get_content_type (file_info);
- app_info = g_app_info_get_default_for_type (content_type, TRUE);
-
- file_list = g_list_append (file_list, file);
+ file_list.data = file;
/* FIXME: should we use a GAppLaunchContext? */
- g_app_info_launch (app_info, file_list,
- NULL, NULL);
+ if (!g_app_info_launch (app_info, &file_list, NULL, &error)) {
+ /* FIXME: use ev_window_error_message */
+ g_warning ("%s", error->message);
+ g_error_free (error);
+ }
- g_list_free (file_list);
g_object_unref (app_info);
- g_object_unref (file_info);
g_object_unref (file);
/* According to the PDF spec filename can be an executable. I'm not sure