diff --git a/src/wayland/meta-wayland-xdg-shell.c b/src/wayland/meta-wayland-xdg-shell.c index 450acda7d..62675873c 100644 --- a/src/wayland/meta-wayland-xdg-shell.c +++ b/src/wayland/meta-wayland-xdg-shell.c @@ -839,6 +839,17 @@ finish_popup_setup (MetaWaylandXdgPopup *xdg_popup) xdg_popup->popup = popup; } + else + { + /* The keyboard focus semantics for non-grabbing zxdg_shell_v6 popups + * is pretty undefined. Same applies for subsurfaces, but in practice, + * subsurfaces never receive keyboard focus, so it makes sense to + * do the same for non-grabbing popups. + * + * See https://bugzilla.gnome.org/show_bug.cgi?id=771694#c24 + */ + window->input = FALSE; + } } static void diff --git a/src/wayland/meta-window-wayland.c b/src/wayland/meta-window-wayland.c index 1527bcf06..6d8727a1d 100644 --- a/src/wayland/meta-window-wayland.c +++ b/src/wayland/meta-window-wayland.c @@ -117,24 +117,11 @@ static void meta_window_wayland_focus (MetaWindow *window, guint32 timestamp) { - MetaWaylandSurface *surface = window->surface; - MetaWaylandSurfaceRoleShellSurface *shell_surface_role = - META_WAYLAND_SURFACE_ROLE_SHELL_SURFACE (surface->role); - - /* The keyboard focus semantics for non-grabbing zxdg_shell_v6 popups - * is pretty undefined. Same applies for subsurfaces, but in practice, - * subsurfaces never receive keyboard focus, so it makes sense to - * do the same for non-grabbing popups. - * - * See https://bugzilla.gnome.org/show_bug.cgi?id=771694#c24 - */ - if (META_IS_WAYLAND_XDG_POPUP (shell_surface_role)) - return; - - meta_display_set_input_focus_window (window->display, - window, - FALSE, - timestamp); + if (window->input) + meta_display_set_input_focus_window (window->display, + window, + FALSE, + timestamp); } static void