]> git.mdlowis.com Git - proto/labwc.git/commitdiff
keyboard.c: don't broadcast modifiers from virtual keyboards
authorOrfeas <38209077+0xfea5@users.noreply.github.com>
Thu, 15 May 2025 21:30:24 +0000 (00:30 +0300)
committerConsolatis <35009135+Consolatis@users.noreply.github.com>
Thu, 15 May 2025 21:49:54 +0000 (23:49 +0200)
Fixes: #2723
src/input/keyboard.c

index 422f037d0bf9e7298c3edaace9ea6afdd082be09..42559f3b1b7c9ec998ed033e7ea1538a9ea25051 100644 (file)
@@ -104,8 +104,14 @@ seat_client_from_keyboard_resource(struct wl_resource *resource)
 
 static void
 broadcast_modifiers_to_unfocused_clients(struct wlr_seat *seat,
+               const struct keyboard *keyboard,
                const struct wlr_keyboard_modifiers *modifiers)
 {
+       /* Prevent overwriting the group modifier by a virtual keyboard */
+       if (keyboard->is_virtual) {
+               return;
+       }
+
        struct wlr_seat_client *client;
        wl_list_for_each(client, &seat->clients, link) {
                if (client == seat->keyboard_state.focused_client) {
@@ -191,7 +197,7 @@ keyboard_modifiers_notify(struct wl_listener *listener, void *data)
                 * clients with pointer-focus (see issue #2271)
                 */
                broadcast_modifiers_to_unfocused_clients(seat->seat,
-                       &wlr_keyboard->modifiers);
+                       keyboard, &wlr_keyboard->modifiers);
        }
 }