summaryrefslogtreecommitdiff
path: root/gtk/gtkapplication-x11.c
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2015-07-06 14:08:11 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2015-07-14 18:34:09 -0700
commita00a5ed2104b516200c13c40be3ffa174d87fd91 (patch)
treec1020275244ea74234f7681ffa10041bca8b3b40 /gtk/gtkapplication-x11.c
parent18dbe181fb13571ecbc76ce7f7f28c36c557a3d6 (diff)
downloadgtk+-a00a5ed2104b516200c13c40be3ffa174d87fd91.tar.gz
GtkApplication: avoid using stale timestamps
Avoid using a stale timestamp (from the last user interaction with the application) when a message arrives from D-Bus requesting that a new window be created. In this case the most-correct thing that we can do is to use no timestamp at all. We modify gdk_x11_display_set_startup_notification_id() to allow a NULL value to mean "reset everything" and then call this function unconditionally on receipt of D-Bus activation requests. The result will be that a missing desktop-startup-id in the platform-data struct will reset the timestamp. Under their default configuration metacity and mutter will both map windows presented with no timestamp in the foreground. This could result in false-positive, but there is very little we can do about that without the original timestamp from the user event. https://bugzilla.gnome.org/show_bug.cgi?id=752000
Diffstat (limited to 'gtk/gtkapplication-x11.c')
-rw-r--r--gtk/gtkapplication-x11.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/gtk/gtkapplication-x11.c b/gtk/gtkapplication-x11.c
index 4ee5b8fec0..8c52be8490 100644
--- a/gtk/gtkapplication-x11.c
+++ b/gtk/gtkapplication-x11.c
@@ -82,14 +82,11 @@ static void
gtk_application_impl_x11_before_emit (GtkApplicationImpl *impl,
GVariant *platform_data)
{
- const char *startup_notification_id;
-
- if (g_variant_lookup (platform_data, "desktop-startup-id",
- "&s", &startup_notification_id))
- {
- gdk_x11_display_set_startup_notification_id (gdk_display_get_default (),
- startup_notification_id);
- }
+ const char *startup_notification_id = NULL;
+
+ g_variant_lookup (platform_data, "desktop-startup-id", "&s", &startup_notification_id);
+
+ gdk_x11_display_set_startup_notification_id (gdk_display_get_default (), startup_notification_id);
}
static void