diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2008-09-05 09:47:48 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2008-09-05 09:47:48 (GMT) |
commit | 3e53caa56a48a1b854588e9a53c863ef7071f58e (patch) | |
tree | fd3edf112ccdfd351a1ac325d93574ebaf050c46 /libdocument/ev-attachment.c | |
parent | 94cb89c0c9cbefaadaa067062fe7ea461f9a8d64 (diff) |
Use GdkAppLaunchContext when available to open attachments.
2008-09-05 Carlos Garcia Campos <carlosgc@gnome.org>
* libdocument/ev-attachment.[ch]: (ev_attachment_launch_app),
(ev_attachment_open):
* shell/ev-sidebar-attachments.c:
(ev_sidebar_attachments_button_press):
* shell/ev-window.c: (ev_attachment_popup_cmd_open_attachment):
Use GdkAppLaunchContext when available to open attachments.
svn path=/trunk/; revision=3152
Diffstat (limited to 'libdocument/ev-attachment.c')
-rw-r--r-- | libdocument/ev-attachment.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/libdocument/ev-attachment.c b/libdocument/ev-attachment.c index 02d5f3d..2eadadf 100644 --- a/libdocument/ev-attachment.c +++ b/libdocument/ev-attachment.c @@ -20,6 +20,7 @@ #include <config.h> #include <glib/gi18n.h> #include <glib/gstdio.h> +#include <gtk/gtk.h> #include "ev-file-helpers.h" #include "ev-attachment.h" @@ -340,18 +341,30 @@ ev_attachment_save (EvAttachment *attachment, static gboolean ev_attachment_launch_app (EvAttachment *attachment, + GdkScreen *screen, + guint32 timestamp, GError **error) { - gboolean result; - GList *files = NULL; - GError *ioerror = NULL; + gboolean result; + GList *files = NULL; + GAppLaunchContext *context = NULL; + GError *ioerror = NULL; g_assert (G_IS_FILE (attachment->priv->tmp_file)); g_assert (G_IS_APP_INFO (attachment->priv->app)); files = g_list_prepend (files, attachment->priv->tmp_file); + +#if GTK_CHECK_VERSION (2, 14, 0) + context = G_APP_LAUNCH_CONTEXT (gdk_app_launch_context_new ()); + gdk_app_launch_context_set_screen (GDK_APP_LAUNCH_CONTEXT (context), screen); + gdk_app_launch_context_set_timestamp (GDK_APP_LAUNCH_CONTEXT (context), timestamp); +#endif result = g_app_info_launch (attachment->priv->app, files, - NULL, &ioerror); + context, &ioerror); + + if (context) + g_object_unref (context); if (!result) { g_set_error (error, @@ -374,6 +387,8 @@ ev_attachment_launch_app (EvAttachment *attachment, gboolean ev_attachment_open (EvAttachment *attachment, + GdkScreen *screen, + guint32 timestamp, GError **error) { GAppInfo *app_info; @@ -398,7 +413,8 @@ ev_attachment_open (EvAttachment *attachment, if (attachment->priv->tmp_file && g_file_query_exists (attachment->priv->tmp_file, NULL)) { - retval = ev_attachment_launch_app (attachment, error); + retval = ev_attachment_launch_app (attachment, screen, + timestamp, error); } else { GFile *tmpdir; GFile *file; @@ -411,7 +427,8 @@ ev_attachment_open (EvAttachment *attachment, g_object_unref (attachment->priv->tmp_file); attachment->priv->tmp_file = g_object_ref (file); - retval = ev_attachment_launch_app (attachment, error); + retval = ev_attachment_launch_app (attachment, screen, + timestamp, error); } g_object_unref (file); |