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
This commit is contained in:
Mario Sanchez Prada 2018-05-21 15:44:02 +01:00 committed by Mario Sanchez Prada
parent 479c341545
commit 07d6c53346

View File

@ -363,6 +363,17 @@ static void
gtk_application_after_emit (GApplication *application, gtk_application_after_emit (GApplication *application,
GVariant *platform_data) 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 static void