summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/eom-application.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/eom-application.c b/src/eom-application.c
index d1797df..6d56e0c 100644
--- a/src/eom-application.c
+++ b/src/eom-application.c
@@ -279,8 +279,24 @@ eom_application_get_file_window (EomApplication *application, GFile *file)
static void
eom_application_show_window (EomWindow *window, gpointer user_data)
{
- gtk_window_present_with_time (GTK_WINDOW (window),
- GPOINTER_TO_UINT (user_data));
+ guint32 timestamp = GPOINTER_TO_UINT (user_data);
+
+ /* set the proper interaction time on the window.
+ * Fall back to roundtripping to the X server when we
+ * don't have the timestamp, e.g. when launched from
+ * terminal. We also need to make sure that the window
+ * has been realized otherwise it will not work. lame.
+ */
+ if (!gtk_widget_get_realized (GTK_WIDGET (window)))
+ gtk_widget_realize (GTK_WIDGET (window));
+
+ if (timestamp <= 0)
+ timestamp = gdk_x11_get_server_time (gtk_widget_get_window (GTK_WIDGET (window)));
+
+ gdk_x11_window_set_user_time (gtk_widget_get_window (GTK_WIDGET (window)),
+ timestamp);
+
+ gtk_window_present (GTK_WINDOW (window));
}
/**