Index: gtk/gtkwindow.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkwindow.c,v
retrieving revision 1.293
diff -u -p -r1.293 gtkwindow.c
--- gtk/gtkwindow.c	17 Jun 2005 20:19:31 -0000	1.293
+++ gtk/gtkwindow.c	20 Jun 2005 06:42:57 -0000
@@ -6004,6 +6004,35 @@ gtk_window_set_frame_dimensions (GtkWind
 void
 gtk_window_present (GtkWindow *window)
 {
+  guint32 timestamp;
+#ifdef GDK_WINDOWING_X11
+  GdkDisplay *display;
+
+  display = gtk_widget_get_display (GTK_WIDGET (window));
+  timestamp = gdk_x11_display_get_user_time (display);
+#else
+  timestamp = gtk_get_current_event_time ();
+#endif
+  
+  gtk_window_present_time (window, timestamp);
+}
+
+/**
+ * gtk_window_present_time:
+ * @window: a #GtkWindow
+ * @timestamp: the timestamp of the user interaction (typically a 
+ *   button or key press event) which triggered this call
+ *
+ * Presents a window to the user in response to a user interaction.
+ * If you need to present a window without a timestamp, use 
+ * gtk_window_present(). See gtk_window_present() for details. 
+ * 
+ * Since: 2.8
+ **/
+void
+gtk_window_present_time (GtkWindow *window,
+			 guint32    timestamp)
+{
   GtkWidget *widget;
 
   g_return_if_fail (GTK_IS_WINDOW (window));
@@ -6019,13 +6048,7 @@ gtk_window_present (GtkWindow *window)
       /* note that gdk_window_focus() will also move the window to
        * the current desktop, for WM spec compliant window managers.
        */
-#ifdef GDK_WINDOWING_X11
-      gdk_window_focus (widget->window,
-			gdk_x11_display_get_user_time (gtk_widget_get_display (widget)));
-#else
-      gdk_window_focus (widget->window,
-                        gtk_get_current_event_time ());
-#endif
+      gdk_window_focus (widget->window, timestamp);
     }
   else
     {
Index: gtk/gtkwindow.h
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkwindow.h,v
retrieving revision 1.80
diff -u -p -r1.80 gtkwindow.h
--- gtk/gtkwindow.h	17 Jun 2005 20:19:31 -0000	1.80
+++ gtk/gtkwindow.h	20 Jun 2005 06:42:57 -0000
@@ -305,6 +305,8 @@ gboolean gtk_window_propagate_key_event 
 					   GdkEventKey      *event);
 
 void     gtk_window_present       (GtkWindow *window);
+void     gtk_window_present_time  (GtkWindow *window,
+				   guint32    timestamp);
 void     gtk_window_iconify       (GtkWindow *window);
 void     gtk_window_deiconify     (GtkWindow *window);
 void     gtk_window_stick         (GtkWindow *window);
