]> git.mdlowis.com Git - proto/labwc.git/commitdiff
keyboard: fix release event bug after session lock
authorJohan Malm <jgm323@gmail.com>
Thu, 28 Sep 2023 19:44:57 +0000 (20:44 +0100)
committerConsolatis <35009135+Consolatis@users.noreply.github.com>
Thu, 28 Sep 2023 19:58:47 +0000 (21:58 +0200)
Do not withhold the release event associated with a keybind which executes
a keyboard-input-inhibiting client like swaylock.

In other words, make release-events of absorbed keys (those used up by a
keybind) de-register as such even though session-lock or input-inhibit is
in-force.

Fixes: issue #1114
Helped-by: @Consolatis
src/keyboard.c

index b3d44766755a19bf099983e268014203f6f31937..3f954c7ccabaac2be3501439217d6453389505ad 100644 (file)
@@ -232,18 +232,6 @@ handle_compositor_keybindings(struct keyboard *keyboard,
                        event->state == WL_KEYBOARD_KEY_STATE_PRESSED);
        }
 
-       /*
-        * Ignore labwc keybindings if input is inhibited
-        * It's important to do this after key_state_set_pressed() to ensure
-        * _all_ key press/releases are registered
-        */
-       if (seat->active_client_while_inhibited) {
-               return false;
-       }
-       if (seat->server->session_lock) {
-               return false;
-       }
-
        /*
         * If a user lets go of the modifier (e.g. alt) before the 'normal' key
         * (e.g. tab) when window-cycling, we do not end the cycling until both
@@ -269,6 +257,18 @@ handle_compositor_keybindings(struct keyboard *keyboard,
                return true;
        }
 
+       /*
+        * Ignore labwc keybindings if input is inhibited
+        * It's important to do this after key_state_set_pressed() to ensure
+        * _all_ key press/releases are registered
+        */
+       if (seat->active_client_while_inhibited) {
+               return false;
+       }
+       if (seat->server->session_lock) {
+               return false;
+       }
+
        uint32_t modifiers = wlr_keyboard_get_modifiers(wlr_keyboard);
 
        /* Catch C-A-F1 to C-A-F12 to change tty */