From 3e53caa56a48a1b854588e9a53c863ef7071f58e Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Fri, 05 Sep 2008 09:47:48 +0000 Subject: Use GdkAppLaunchContext when available to open attachments. 2008-09-05 Carlos Garcia Campos * 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 --- (limited to 'libdocument') 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 #include #include +#include #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); diff --git a/libdocument/ev-attachment.h b/libdocument/ev-attachment.h index 8403bee..f163c0a 100644 --- a/libdocument/ev-attachment.h +++ b/libdocument/ev-attachment.h @@ -66,6 +66,8 @@ gboolean ev_attachment_save (EvAttachment *attachment, GFile *file, GError **error); gboolean ev_attachment_open (EvAttachment *attachment, + GdkScreen *screen, + guint32 timestamp, GError **error); G_END_DECLS -- cgit v0.9.1