From 07d6c533468c003262093cc0a9f9b9abcc470d6d Mon Sep 17 00:00:00 2001 From: Mario Sanchez Prada Date: Mon, 21 May 2018 15:44:02 +0100 Subject: [PATCH] application: Complete startup notification sequence for remote invocations When a remote instance of a GTK application implementing the Startup Notification protocol gets spawned it will pass the startup sequence ID as "platform data" to the main instance. Thus, we need to make sure that the startup sequence gets completed in that case, since the remote instance won't do it by itself, since it won't map any top level window. Checking for this "platform data" in the implementation of the after_emit() virtual method in the primary instance should be a good place to do so, since the existence of such data proves that a remote instance has been spawned. https://gitlab.gnome.org/GNOME/gtk/issues/1084 --- gtk/gtkapplication.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c index dd2aeb038c..ef5b23f777 100644 --- a/gtk/gtkapplication.c +++ b/gtk/gtkapplication.c @@ -363,6 +363,17 @@ static void gtk_application_after_emit (GApplication *application, GVariant *platform_data) { + const char *startup_notification_id = NULL; + + g_variant_lookup (platform_data, "desktop-startup-id", "&s", &startup_notification_id); + if (startup_notification_id) + { + GdkDisplay *display; + + display = gdk_display_get_default (); + if (display) + gdk_display_notify_startup_complete (display, startup_notification_id); + } } static void -- 2.30.2