1
0
Fork 0
forked from wry/wry

wl_keyboard: avoid sending leave during state change

This commit is contained in:
Julian Orth 2025-12-29 18:41:18 +01:00
parent 69ed0c0ad4
commit 7d787e3072

View file

@ -60,14 +60,24 @@ impl WlKeyboard {
serial: u64, serial: u64,
kb_state: &KeyboardState, kb_state: &KeyboardState,
surface_id: WlSurfaceId, surface_id: WlSurfaceId,
send_leave: bool, on_surface: bool,
) { ) {
self.kb_state_id.set(kb_state.id); self.kb_state_id.set(kb_state.id);
if send_leave { let send_enter;
self.send_leave(serial, surface_id); 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_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); self.send_modifiers(serial, &kb_state.mods);
} }