diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c index bf2dcd0068..707b2dcb43 100644 --- a/gdk/wayland/gdkwindow-wayland.c +++ b/gdk/wayland/gdkwindow-wayland.c @@ -2093,6 +2093,19 @@ static void gdk_wayland_window_focus (GdkWindow *window, guint32 timestamp) { + GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); + + if (!impl->display_server.gtk_surface) + return; + + /* We didn't have an event to fetch a time from, meaning we have nothing valid + * to send. This should rather be translated to a 'needs-attention' request or + * something. + */ + if (timestamp == GDK_CURRENT_TIME) + return; + + gtk_surface1_present (impl->display_server.gtk_surface, timestamp); } static void diff --git a/gdk/wayland/protocol/gtk-shell.xml b/gdk/wayland/protocol/gtk-shell.xml index aa9993d66c..2e750ea0f1 100644 --- a/gdk/wayland/protocol/gtk-shell.xml +++ b/gdk/wayland/protocol/gtk-shell.xml @@ -42,6 +42,10 @@ + + + +