evince r3152 - in trunk: . libdocument shell



Author: carlosgc
Date: Fri Sep  5 09:47:48 2008
New Revision: 3152
URL: http://svn.gnome.org/viewvc/evince?rev=3152&view=rev

Log:
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.


Modified:
   trunk/ChangeLog
   trunk/libdocument/ev-attachment.c
   trunk/libdocument/ev-attachment.h
   trunk/shell/ev-sidebar-attachments.c
   trunk/shell/ev-window.c

Modified: trunk/libdocument/ev-attachment.c
==============================================================================
--- trunk/libdocument/ev-attachment.c	(original)
+++ trunk/libdocument/ev-attachment.c	Fri Sep  5 09:47:48 2008
@@ -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 @@
 
 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 @@
 
 gboolean
 ev_attachment_open (EvAttachment *attachment,
+		    GdkScreen    *screen,
+		    guint32       timestamp,
 		    GError      **error)
 {
 	GAppInfo *app_info;
@@ -398,7 +413,8 @@
 
 	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 @@
 				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);

Modified: trunk/libdocument/ev-attachment.h
==============================================================================
--- trunk/libdocument/ev-attachment.h	(original)
+++ trunk/libdocument/ev-attachment.h	Fri Sep  5 09:47:48 2008
@@ -66,6 +66,8 @@
 						  GFile        *file,
 						  GError      **error);
 gboolean     ev_attachment_open                  (EvAttachment *attachment,
+						  GdkScreen    *screen,
+						  guint32       timestamp,
 						  GError      **error);
 
 G_END_DECLS

Modified: trunk/shell/ev-sidebar-attachments.c
==============================================================================
--- trunk/shell/ev-sidebar-attachments.c	(original)
+++ trunk/shell/ev-sidebar-attachments.c	Fri Sep  5 09:47:48 2008
@@ -295,7 +295,10 @@
 				if (!attachment)
 					return FALSE;
 				
-				ev_attachment_open (attachment, &error);
+				ev_attachment_open (attachment,
+						    gtk_widget_get_screen (GTK_WIDGET (ev_attachbar)),
+						    event->time,
+						    &error);
 				
 				if (error) {
 					g_warning ("%s", error->message);

Modified: trunk/shell/ev-window.c
==============================================================================
--- trunk/shell/ev-window.c	(original)
+++ trunk/shell/ev-window.c	Fri Sep  5 09:47:48 2008
@@ -5170,18 +5170,21 @@
 static void
 ev_attachment_popup_cmd_open_attachment (GtkAction *action, EvWindow *window)
 {
-	GList *l;
+	GList     *l;
+	GdkScreen *screen;
 	
 	if (!window->priv->attach_list)
 		return;
 
+	screen = gtk_window_get_screen (GTK_WINDOW (window));
+
 	for (l = window->priv->attach_list; l && l->data; l = g_list_next (l)) {
 		EvAttachment *attachment;
 		GError       *error = NULL;
 		
 		attachment = (EvAttachment *) l->data;
 		
-		ev_attachment_open (attachment, &error);
+		ev_attachment_open (attachment, screen, GDK_CURRENT_TIME, &error);
 
 		if (error) {
 			ev_window_error_message (GTK_WINDOW (window),



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]