mirror of
https://github.com/labwc/labwc.git
synced 2025-11-04 13:30:07 -05:00
src/keyboard.c: register keys before inhibit check
Call key_state_set_pressed() before checking seat->active_client_while_inhibited to avoid missing release events for clients using the inhibit protocol (for example swaylock).
This commit is contained in:
parent
20c4ffa539
commit
4108313f96
1 changed files with 10 additions and 6 deletions
|
|
@ -124,6 +124,15 @@ handle_compositor_keybindings(struct wl_listener *listener,
|
||||||
key_state_set_pressed(keycode,
|
key_state_set_pressed(keycode,
|
||||||
event->state == WL_KEYBOARD_KEY_STATE_PRESSED);
|
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 a user lets go of the modifier (e.g. alt) before the 'normal' key
|
* 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
|
* (e.g. tab) when window-cycling, we do not end the cycling until both
|
||||||
|
|
@ -233,12 +242,7 @@ keyboard_key_notify(struct wl_listener *listener, void *data)
|
||||||
struct wlr_keyboard *keyboard = &seat->keyboard_group->keyboard;
|
struct wlr_keyboard *keyboard = &seat->keyboard_group->keyboard;
|
||||||
wlr_idle_notify_activity(seat->wlr_idle, seat->seat);
|
wlr_idle_notify_activity(seat->wlr_idle, seat->seat);
|
||||||
|
|
||||||
bool handled = false;
|
bool handled = handle_compositor_keybindings(listener, event);
|
||||||
|
|
||||||
/* ignore labwc keybindings if input is inhibited */
|
|
||||||
if (!seat->active_client_while_inhibited) {
|
|
||||||
handled = handle_compositor_keybindings(listener, event);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!handled) {
|
if (!handled) {
|
||||||
wlr_seat_set_keyboard(wlr_seat, keyboard);
|
wlr_seat_set_keyboard(wlr_seat, keyboard);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue