From 8a5067c9170880fb48652c48153dc2ac45eb71a1 Mon Sep 17 00:00:00 2001 From: Sebastian Keller Date: Tue, 6 Jun 2023 01:24:36 +0200 Subject: [PATCH] events: Don't un-bypass Clutter event handling in presence of grabs After an event has been handled such that it bypasses both Clutter and Wayland, e.g. when handling a keybinding, bypass_clutter would get unset in the presence of a wayland grab. This means that the event is handled both as a keybinding and by Clutter. In the case of switcher popups in gnome-shell in the presence of a gtk4 autohide popover this meant that instead of selecting the next element, it would select the one after that. If there are only two elements, as is common with input sources, this would mean going back to the current one, preventing switching them with a single press of the keybinding. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6738 Part-of: --- src/core/events.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/events.c b/src/core/events.c index 7ee03cf37..3ae38110a 100644 --- a/src/core/events.c +++ b/src/core/events.c @@ -530,7 +530,7 @@ meta_display_handle_event (MetaDisplay *display, #ifdef HAVE_WAYLAND /* If a Wayland client has a grab, don't pass that through to Clutter */ if (wayland_compositor && meta_wayland_compositor_is_grabbed (wayland_compositor)) - bypass_clutter = !bypass_wayland; + bypass_clutter = bypass_clutter || !bypass_wayland; if (wayland_compositor && !bypass_wayland) {