From dc9d190ac910c4101cccd805f3c7dadf7b504962 Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Tue, 8 Aug 2023 08:58:22 -0700 Subject: [PATCH] Backport #3162 to fix super key not triggering overview Note the MR comments indicate this might break something else, but that's about multiple touch events so probably less important than 'super doesn't work'. --- 3162.patch | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ mutter.spec | 5 +++++ 2 files changed, 62 insertions(+) create mode 100644 3162.patch diff --git a/3162.patch b/3162.patch new file mode 100644 index 0000000..dd3a90f --- /dev/null +++ b/3162.patch @@ -0,0 +1,57 @@ +From 69ce2cc5cf1f4759afea7fd3429c9f33b6d07919 Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +Date: Tue, 8 Aug 2023 16:04:25 +0200 +Subject: [PATCH] backends/native: Fix handling order of key event + +First create the event with the current xkb modifier mask, then +update the xkb_state and the modifier mask. This is how it happened +before commit 2e8d8397081, and how it should stay. + +Fixes: 2e8d8397081 ("backends/native: Port to new event constructors") + +Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2951 +--- + src/backends/native/meta-seat-impl.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/src/backends/native/meta-seat-impl.c b/src/backends/native/meta-seat-impl.c +index 0c26647b43..77eb4faac6 100644 +--- a/src/backends/native/meta-seat-impl.c ++++ b/src/backends/native/meta-seat-impl.c +@@ -415,16 +415,6 @@ meta_seat_impl_notify_key_in_impl (MetaSeatImpl *seat_impl, + return; + } + } +- +- keycode = meta_xkb_evdev_to_keycode (key); +- +- /* We must be careful and not pass multiple releases to xkb, otherwise it gets +- confused and locks the modifiers */ +- if (state != AUTOREPEAT_VALUE) +- { +- changed_state = xkb_state_update_key (seat_impl->xkb, keycode, +- state ? XKB_KEY_DOWN : XKB_KEY_UP); +- } + else + { + changed_state = 0; +@@ -438,6 +428,16 @@ meta_seat_impl_notify_key_in_impl (MetaSeatImpl *seat_impl, + seat_impl->button_state, + time_us, key, state); + ++ keycode = meta_xkb_evdev_to_keycode (key); ++ ++ /* We must be careful and not pass multiple releases to xkb, otherwise it gets ++ confused and locks the modifiers */ ++ if (state != AUTOREPEAT_VALUE) ++ { ++ changed_state = xkb_state_update_key (seat_impl->xkb, keycode, ++ state ? XKB_KEY_DOWN : XKB_KEY_UP); ++ } ++ + if (!meta_input_device_native_process_kbd_a11y_event_in_impl (seat_impl->core_keyboard, + event)) + queue_event (seat_impl, event); +-- +GitLab + diff --git a/mutter.spec b/mutter.spec index 4907406..9c37de1 100644 --- a/mutter.spec +++ b/mutter.spec @@ -30,6 +30,11 @@ Patch1: mutter-42.alpha-disable-tegra.patch # https://pagure.io/fedora-workstation/issue/79 Patch2: 0001-place-Always-center-initial-setup-fedora-welcome.patch +# fix super key no longer triggering overview +# https://gitlab.gnome.org/GNOME/mutter/-/issues/2951 +# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3162 +Patch3: 3162.patch + BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0 BuildRequires: pkgconfig(sm) BuildRequires: pkgconfig(libwacom)