diff options
Diffstat (limited to 'gdk/wayland/gdkwindow-wayland.c')
-rw-r--r-- | gdk/wayland/gdkwindow-wayland.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c index 2d7c42bd7a..fffe58e397 100644 --- a/gdk/wayland/gdkwindow-wayland.c +++ b/gdk/wayland/gdkwindow-wayland.c @@ -3785,10 +3785,20 @@ gdk_wayland_window_focus (GdkWindow *window, GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window)); - if (display_wayland->gtk_shell_version >= 3) + if (display_wayland->startup_notification_id) { - gtk_surface1_request_focus (impl->display_server.gtk_surface, - display_wayland->startup_notification_id); + if (display_wayland->xdg_activation) + { + xdg_activation_v1_activate (display_wayland->xdg_activation, + display_wayland->startup_notification_id, + impl->display_server.wl_surface); + } + else if (display_wayland->gtk_shell_version >= 3) + { + gtk_surface1_request_focus (impl->display_server.gtk_surface, + display_wayland->startup_notification_id); + } + g_clear_pointer (&display_wayland->startup_notification_id, g_free); } } |