]> git.mdlowis.com Git - proto/labwc.git/commitdiff
keyboard: Fix cycle view taking precedence over TTY switch
authorJoshua Ashton <joshua@froggi.es>
Mon, 1 Nov 2021 22:00:52 +0000 (22:00 +0000)
committerJohan Malm <johanmalm@users.noreply.github.com>
Mon, 1 Nov 2021 22:14:17 +0000 (22:14 +0000)
I had a bug where cycle view would not close and I was unable to switch to a TTY as it was open.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
src/keyboard.c

index f91602253d6c113bfb311c3c56c9f532daaec17e..7fa85d338bf15c4f82c3a1cb28e0b863a37930b5 100644 (file)
@@ -104,6 +104,18 @@ handle_compositor_keybindings(struct wl_listener *listener,
        uint32_t modifiers =
                wlr_keyboard_get_modifiers(device->keyboard);
 
+       /* Catch C-A-F1 to C-A-F12 to change tty */
+       if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+               for (int i = 0; i < nsyms; i++) {
+                       unsigned int vt = syms[i] - XKB_KEY_XF86Switch_VT_1 + 1;
+                       if (vt >= 1 && vt <= 12) {
+                               change_vt(server, vt);
+                               /* don't send any key events to clients when changing tty */
+                               return true;
+                       }
+               }
+       }
+
        if (server->cycle_view) {
                damage_all_outputs(server);
                if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
@@ -133,17 +145,6 @@ handle_compositor_keybindings(struct wl_listener *listener,
                        handled |= handle_keybinding(server, modifiers, syms[i]);
                }
        }
-
-       /* Catch C-A-F1 to C-A-F12 to change tty */
-       if (!handled && event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
-               for (int i = 0; i < nsyms; i++) {
-                       unsigned int vt = syms[i] - XKB_KEY_XF86Switch_VT_1 + 1;
-                       if (vt >= 1 && vt <= 12) {
-                               change_vt(server, vt);
-                               handled = true;
-                       }
-               }
-       }
        return handled;
 }