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'.
This commit is contained in:
Adam Williamson 2023-08-08 08:58:22 -07:00
parent 1be4b1a825
commit dc9d190ac9
2 changed files with 62 additions and 0 deletions

57
3162.patch Normal file
View File

@ -0,0 +1,57 @@
From 69ce2cc5cf1f4759afea7fd3429c9f33b6d07919 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
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

View File

@ -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)