From 6ccd786a93a9309247abcdb3224cb874507d1a39 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 18 Jan 2023 20:37:01 +0100 Subject: [PATCH] gdk/x11: Emit "remove" s-n message from gdk_toplevel_set_startup_id In the way towards deprecating gdk_display_notify_startup_complete(), make gdk_toplevel_set_startup_id() on X11 perform this piece of messaging itself. It should be harmless that the message is emitted twice, if callers do still use that API. (cherry-picked from commit 7fab1b85adbddff7628e3e916f00677080fb9150) --- gdk/x11/gdkwindow-x11.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 194bc82e29..89f0666014 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -2901,6 +2901,7 @@ gdk_x11_window_set_startup_id (GdkWindow *window, const gchar *startup_id) { GdkDisplay *display; + gchar *free_this = NULL; g_return_if_fail (GDK_IS_WINDOW (window)); @@ -2918,6 +2919,23 @@ gdk_x11_window_set_startup_id (GdkWindow *window, else XDeleteProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XID (window), gdk_x11_get_xatom_by_name_for_display (display, "_NET_STARTUP_ID")); + + if (startup_id == NULL) + { + GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); + + startup_id = free_this = display_x11->startup_notification_id; + display_x11->startup_notification_id = NULL; + + if (startup_id == NULL) + return; + } + + gdk_x11_display_broadcast_startup_message (display, "remove", + "ID", startup_id, + NULL); + + g_free (free_this); } static void