wayland: Keep startup_notification_id around long enough
authorGuido Günther <agx@sigxcpu.org>
Wed, 25 Aug 2021 10:21:48 +0000 (12:21 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 28 Feb 2022 16:55:54 +0000 (16:55 +0000)
When using xdg_activation we need to keep the id around until we send
the first activate to signal succesful startup.

gdk/wayland/gdkdisplay-wayland.c
gdk/wayland/gdksurface-wayland.c

index ea64041aa75cd0bcd8386980daa12bc5ace8a2eb..c8100ff4faf61606cbf2a4aa2778e05ca4464d27 100644 (file)
@@ -854,6 +854,10 @@ gdk_wayland_display_notify_startup_complete (GdkDisplay  *display,
   GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
   char *free_this = NULL;
 
+  /* Will be signaled with focus activation */
+  if (display_wayland->xdg_activation)
+    return;
+
   if (startup_id == NULL)
     {
       startup_id = free_this = display_wayland->startup_notification_id;
index da2f110b14e4180d8a7133695b7b50de41860cf5..25be2f0b7c559dee1d40b5f6e67250c62bcafc62 100644 (file)
@@ -3474,6 +3474,7 @@ gdk_wayland_surface_focus (GdkSurface *surface,
               xdg_activation_v1_activate (display_wayland->xdg_activation,
                                           display_wayland->startup_notification_id,
                                           impl->display_server.wl_surface);
+              gdk_wayland_display_set_startup_notification_id (GDK_DISPLAY (display_wayland), NULL);
             }
           else if (display_wayland->gtk_shell_version >= 3)
             {