Index: ev-application-service.xml
===================================================================
RCS file: /cvs/gnome/evince/shell/ev-application-service.xml,v
retrieving revision 1.1
diff -u -p -r1.1 ev-application-service.xml
--- ev-application-service.xml	30 Jun 2005 08:16:45 -0000	1.1
+++ ev-application-service.xml	26 Aug 2005 01:38:45 -0000
@@ -7,12 +7,14 @@
 
     <method name="OpenWindow">
       <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="ev_application_open_window"/>
+      <arg type="u" name="timestamp" direction="in"/>
     </method>
 
     <method name="OpenURI">
       <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="ev_application_open_uri"/>
       <arg type="s" name="uri" direction="in"/>
       <arg type="s" name="page_label" direction="in"/>
+      <arg type="u" name="timestamp" direction="in"/>
     </method>
 
   </interface>
Index: ev-application.c
===================================================================
RCS file: /cvs/gnome/evince/shell/ev-application.c,v
retrieving revision 1.20
diff -u -p -r1.20 ev-application.c
--- ev-application.c	8 Jul 2005 09:21:56 -0000	1.20
+++ ev-application.c	26 Aug 2005 01:38:46 -0000
@@ -113,9 +113,14 @@ ev_application_get_instance (void)
 
 gboolean
 ev_application_open_window (EvApplication  *application,
+			    guint32         timestamp,
 			    GError        **error)
 {
-	gtk_widget_show (ev_window_new ());
+	GtkWidget *new_window = ev_window_new ();
+
+	gtk_widget_show (new_window);
+	gtk_window_present_with_time (GTK_WINDOW (new_window),
+				      timestamp);
 
 	return TRUE;
 }
@@ -173,6 +178,7 @@ gboolean
 ev_application_open_uri (EvApplication  *application,
 			 const char     *uri,
 			 const char     *page_label,
+			 guint           timestamp,
 			 GError        **error)
 {
 	EvWindow *new_window;
@@ -181,7 +187,8 @@ ev_application_open_uri (EvApplication  
 
 	new_window = ev_application_get_uri_window (application, uri);
 	if (new_window != NULL) {
-		gtk_window_present (GTK_WINDOW (new_window));
+		gtk_window_present_with_time (GTK_WINDOW (new_window),
+					      timestamp);
 		
 		return TRUE;
 	}
@@ -190,11 +197,12 @@ ev_application_open_uri (EvApplication  
 
 	if (new_window == NULL) {
 		new_window = EV_WINDOW (ev_window_new ());
+		gtk_widget_show (GTK_WIDGET (new_window));
 	}
 	
 	ev_window_open_uri (new_window, uri);
 
-	gtk_window_present (GTK_WINDOW (new_window));
+	gtk_window_present_with_time (GTK_WINDOW (new_window), timestamp);
 
 	if (page_label != NULL) {
 		ev_window_open_page_label (new_window, page_label);
@@ -204,12 +212,17 @@ ev_application_open_uri (EvApplication  
 }
 
 void
-ev_application_open_uri_list (EvApplication *application, GSList *uri_list)
+ev_application_open_uri_list (EvApplication *application,
+			      GSList        *uri_list,
+			      guint          timestamp)
 {
 	GSList *l;
 
 	for (l = uri_list; l != NULL; l = l->next) {
-		ev_application_open_uri (application, (char *)l->data, NULL, NULL);
+		ev_application_open_uri (application, (char *)l->data,
+					 NULL,
+					 timestamp,
+					 NULL);
 	}
 }
 
Index: ev-application.h
===================================================================
RCS file: /cvs/gnome/evince/shell/ev-application.h,v
retrieving revision 1.10
diff -u -p -r1.10 ev-application.h
--- ev-application.h	8 Jul 2005 09:07:04 -0000	1.10
+++ ev-application.h	26 Aug 2005 01:38:46 -0000
@@ -66,13 +66,16 @@ void	          ev_application_shutdown	 
 
 
 gboolean          ev_application_open_window         (EvApplication   *application,
+						      guint32         timestamp,
 						      GError         **error);
 gboolean          ev_application_open_uri            (EvApplication   *application,
 				                      const char      *uri,
 					              const char      *page_label,
+						      guint32         timestamp,
 						      GError         **error);
 void	          ev_application_open_uri_list       (EvApplication   *application,
-		  			              GSList          *uri_list);
+		  			              GSList          *uri_list,
+    						      guint32          timestamp);
 
 
 EggToolbarsModel *ev_application_get_toolbars_model  (EvApplication   *application);
Index: ev-window.c
===================================================================
RCS file: /cvs/gnome/evince/shell/ev-window.c,v
retrieving revision 1.209
diff -u -p -r1.209 ev-window.c
--- ev-window.c	25 Aug 2005 06:34:19 -0000	1.209
+++ ev-window.c	26 Aug 2005 01:38:48 -0000
@@ -1102,7 +1102,7 @@ ev_window_cmd_file_open (GtkAction *acti
 				
 		folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (chooser));
 
-		ev_application_open_uri_list (EV_APP, uris);
+		ev_application_open_uri_list (EV_APP, uris, GDK_CURRENT_TIME);
 	
 		g_slist_foreach (uris, (GFunc)g_free, NULL);	
 		g_slist_free (uris);
@@ -1126,7 +1126,7 @@ ev_window_cmd_recent_file_activate (GtkA
 
 	uri = egg_recent_item_get_uri (item);
 
-	ev_application_open_uri (EV_APP, uri, NULL, NULL);	
+	ev_application_open_uri (EV_APP, uri, NULL, GDK_CURRENT_TIME, NULL);
 	
 	g_free (uri);
 }
@@ -3042,7 +3042,7 @@ drag_data_received_cb (GtkWidget *widget
 
 		gnome_vfs_uri_list_free (uri_list);
 		
-		ev_application_open_uri_list (EV_APP, uris);
+		ev_application_open_uri_list (EV_APP, uris, 0);
 		
 		g_slist_free (uris);
 
Index: main.c
===================================================================
RCS file: /cvs/gnome/evince/shell/main.c,v
retrieving revision 1.23
diff -u -p -r1.23 main.c
--- main.c	20 Aug 2005 17:10:39 -0000	1.23
+++ main.c	26 Aug 2005 01:38:48 -0000
@@ -24,6 +24,7 @@
 #include "ev-metadata-manager.h"
 
 #include <glib/gi18n.h>
+#include <gdk/gdkx.h>
 #include <gtk/gtkmain.h>
 #include <libgnome/gnome-program.h>
 #include <libgnomeui/gnome-ui-init.h>
@@ -54,7 +55,7 @@ load_files (const char **files)
 	int i;
 
 	if (!files) {
-		ev_application_open_window (EV_APP, NULL);
+		ev_application_open_window (EV_APP, GDK_CURRENT_TIME, NULL);
 		return;
 	}
 
@@ -62,7 +63,8 @@ load_files (const char **files)
 		char *uri;
 
 		uri = gnome_vfs_make_uri_from_shell_arg (files[i]);
-		ev_application_open_uri (EV_APP, uri, ev_page_label, NULL);		
+		ev_application_open_uri (EV_APP, uri, ev_page_label,
+					 GDK_CURRENT_TIME, NULL);
 		g_free (uri);
         }
 }
@@ -79,6 +81,11 @@ load_files_remote (const char **files)
 	DBusGPendingCall *call;
 #endif
 	DBusGProxy *remote_object;
+	GdkDisplay *display;
+	guint32 timestamp;
+
+	display = gdk_display_get_default();
+	timestamp = gdk_x11_display_get_user_time (display);
 
 	connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
 	if (connection == NULL) {
@@ -94,7 +101,9 @@ load_files_remote (const char **files)
                                                    "org.gnome.evince.Application");
 	if (!files) {
 #if DBUS_VERSION <= 33
-		call = dbus_g_proxy_begin_call (remote_object, "OpenWindow", DBUS_TYPE_INVALID);
+		call = dbus_g_proxy_begin_call (remote_object, "OpenWindow",
+						DBUS_TYPE_UINT32, timestamp,
+						DBUS_TYPE_INVALID);
 
 		if (!dbus_g_proxy_end_call (remote_object, call, &error, DBUS_TYPE_INVALID)) {
 			g_warning (error->message);
@@ -102,7 +111,9 @@ load_files_remote (const char **files)
 			return FALSE;
 		}
 #elif DBUS_VERSION == 34
-		call = dbus_g_proxy_begin_call (remote_object, "OpenWindow", G_TYPE_INVALID);
+		call = dbus_g_proxy_begin_call (remote_object, "OpenWindow",
+						G_TYPE_UINT, timestamp,
+						G_TYPE_INVALID);
 
 		if (!dbus_g_proxy_end_call (remote_object, call, &error, G_TYPE_INVALID)) {
 			g_warning (error->message);
@@ -110,7 +121,10 @@ load_files_remote (const char **files)
 			return FALSE;
 		}
 #else
-		if (!dbus_g_proxy_call (remote_object, "OpenWindow", &error, G_TYPE_INVALID)) {
+		if (!dbus_g_proxy_call (remote_object, "OpenWindow", &error,
+					G_TYPE_UINT, timestamp,
+					G_TYPE_INVALID,
+					G_TYPE_INVALID)) {
 			g_warning (error->message);
 			g_clear_error (&error);
 			return FALSE;
@@ -129,6 +143,7 @@ load_files_remote (const char **files)
 		call = dbus_g_proxy_begin_call (remote_object, "OpenURI",
 						DBUS_TYPE_STRING, &uri,
 						DBUS_TYPE_STRING, &page_label,
+						DBUS_TYPE_UINT32, timestamp,
 						DBUS_TYPE_INVALID);
 
 		if (!dbus_g_proxy_end_call (remote_object, call, &error, DBUS_TYPE_INVALID)) {
@@ -141,6 +156,7 @@ load_files_remote (const char **files)
 		call = dbus_g_proxy_begin_call (remote_object, "OpenURI",
 						G_TYPE_STRING, uri,
 						G_TYPE_STRING, page_label,
+						G_TYPE_UINT, timestamp,
 						G_TYPE_INVALID);
 
 		if (!dbus_g_proxy_end_call (remote_object, call, &error, G_TYPE_INVALID)) {
@@ -153,6 +169,8 @@ load_files_remote (const char **files)
 		if (!dbus_g_proxy_call (remote_object, "OpenURI", &error,
 					G_TYPE_STRING, uri,
 					G_TYPE_STRING, page_label,
+					G_TYPE_UINT, timestamp,
+					G_TYPE_INVALID,
 					G_TYPE_INVALID)) {
 			g_warning (error->message);
 			g_clear_error (&error);
@@ -163,6 +181,8 @@ load_files_remote (const char **files)
 		g_free (uri);
 		result = TRUE;
         }
+
+	gdk_notify_startup_complete ();
 
 	return result;
 }
