input: don’t ignore keyboard enter/leave events when there’s no keymap

The compositor _usually_ sends the keymap event *before* the enter
event. But not always.

Not (yet) having a keymap is not a reason to ignore the enter
event (now, on the other hand, getting a key press/release event
without a keymap is a compositor bug).

Closes #1097
This commit is contained in:
Daniel Eklöf 2022-06-28 20:57:48 +02:00
parent 206e9a1050
commit d58290ea12
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 3 additions and 6 deletions

View file

@ -80,9 +80,12 @@
* Workaround for buggy compositors (e.g. some versions of GNOME)
allowing drag-and-drops even though foot has reported it does not
support the offered mime-types ([#1092][1092]).
* Keyboard enter/leave events being ignored if there is no keymap
([#1097][1097]).
[1055]: https://codeberg.org/dnkl/foot/issues/1055
[1092]: https://codeberg.org/dnkl/foot/issues/1092
[1097]: https://codeberg.org/dnkl/foot/issues/1097
### Security

View file

@ -591,9 +591,6 @@ keyboard_enter(void *data, struct wl_keyboard *wl_keyboard, uint32_t serial,
LOG_DBG("%s: keyboard_enter: keyboard=%p, serial=%u, surface=%p",
seat->name, (void *)wl_keyboard, serial, (void *)surface);
if (seat->kbd.xkb == NULL)
return;
term_kbd_focus_in(term);
seat->kbd_focus = term;
seat->kbd.serial = serial;
@ -653,9 +650,6 @@ keyboard_leave(void *data, struct wl_keyboard *wl_keyboard, uint32_t serial,
LOG_DBG("keyboard_leave: keyboard=%p, serial=%u, surface=%p",
(void *)wl_keyboard, serial, (void *)surface);
if (seat->kbd.xkb == NULL)
return;
xassert(
seat->kbd_focus == NULL ||
surface == NULL || /* Seen on Sway 1.2 */