1
0
Fork 0
forked from wry/wry

Merge pull request #710 from mahkoh/jorth/wl-keyboard-no-leave

wl_keyboard: avoid sending leave during state change
This commit is contained in:
mahkoh 2025-12-29 18:52:07 +01:00 committed by GitHub
commit 3f6960e64a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -60,14 +60,24 @@ impl WlKeyboard {
serial: u64,
kb_state: &KeyboardState,
surface_id: WlSurfaceId,
send_leave: bool,
on_surface: bool,
) {
self.kb_state_id.set(kb_state.id);
if send_leave {
self.send_leave(serial, surface_id);
let send_enter;
if on_surface {
if self.pressed_keys.borrow().is_empty() && kb_state.pressed_keys.is_empty() {
send_enter = false;
} else {
self.send_leave(serial, surface_id);
send_enter = true;
}
} else {
send_enter = true;
}
self.send_keymap(kb_state);
self.send_enter(serial, surface_id, &kb_state.pressed_keys);
if send_enter {
self.send_enter(serial, surface_id, &kb_state.pressed_keys);
}
self.send_modifiers(serial, &kb_state.mods);
}