gdk/wayland: Perform xdg_activation on gdk_toplevel_set_startup_id

This call has everything to perform activation as specified by the
xdg_activation protocol, notably a surface to activate as opposed to
gdk_display_notify_startup_complete().

Make activation happen here, so that the surface gets activated when
its gets a startup ID assigned.
This commit is contained in:
Carlos Garnacho 2023-01-03 13:44:44 +01:00
parent 6f01f846dc
commit 5aeabdb3d4

View File

@ -3871,6 +3871,25 @@ static void
gdk_wayland_surface_set_startup_id (GdkSurface *surface,
const char *startup_id)
{
GdkWaylandSurface *wayland_surface = GDK_WAYLAND_SURFACE (surface);
GdkDisplay *display = gdk_surface_get_display (surface);
GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
gchar *free_me = NULL;
if (!startup_id)
{
free_me = g_steal_pointer (&display_wayland->startup_notification_id);
startup_id = free_me;
}
if (startup_id)
{
xdg_activation_v1_activate (display_wayland->xdg_activation,
startup_id,
wayland_surface->display_server.wl_surface);
}
g_free (free_me);
}
static gboolean