diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 8a2b1c6..90d66ab 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -207,6 +207,16 @@ nautilus_window_grab_focus (NautilusWindow *window)
 	NautilusWindowSlot *slot;
 	NautilusView *view;
 
+	g_return_if_fail (NAUTILUS_IS_WINDOW (window));
+
+	if (!NAUTILUS_IS_DESKTOP_WINDOW (window) && gtk_widget_get_realized (GTK_WIDGET (window))) {
+		/* This is an hack, gtk_window_present does not work using the window
+		 * time (which is the display time, in fact). See bug #688830 */
+		GdkWindow *gwindow = gtk_widget_get_window (GTK_WIDGET (window));
+		guint32 server_time = gdk_x11_get_server_time (gwindow);
+		gtk_window_present_with_time (GTK_WINDOW (window), server_time);
+	}
+
 	slot = nautilus_window_get_active_slot (window);
 	view = nautilus_window_slot_get_view (slot);
 
@@ -1328,10 +1338,10 @@ nautilus_window_view_visible (NautilusWindow *window,
 		nautilus_window_slot_update_title (slot);
 	}
 
-	nautilus_window_grab_focus (window);
-
 	/* All slots, show window */
 	gtk_widget_show (GTK_WIDGET (window));
+
+	nautilus_window_grab_focus (window);
 }
 
 static void
@@ -1717,7 +1727,7 @@ nautilus_window_show (GtkWidget *widget)
 
 	window = NAUTILUS_WINDOW (widget);
 
-	GTK_WIDGET_CLASS (nautilus_window_parent_class)->show (widget);	
+	GTK_WIDGET_CLASS (nautilus_window_parent_class)->show (widget);
 
 	gtk_ui_manager_ensure_update (window->details->ui_manager);
 }
-- 
1.7.10.4

