Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/libdocument
diff options
context:
space:
mode:
authorCarlos 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)
commit3e53caa56a48a1b854588e9a53c863ef7071f58e (patch)
treefd3edf112ccdfd351a1ac325d93574ebaf050c46 /libdocument
parent94cb89c0c9cbefaadaa067062fe7ea461f9a8d64 (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')
-rw-r--r--libdocument/ev-attachment.c29
-rw-r--r--libdocument/ev-attachment.h2
2 files changed, 25 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);
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