mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-14 08:21:27 -04:00
ime: track IME focus independently from keyboard focus
Replace the seat->ime.focused boolean with a terminal instace pointer, seat->ime_focus. Set and reset this on ime::enter() and ime::leave() events, and use this instead of seat->kbd_focus on all other IME events. This fixes two issues: a) buggy compositors that sometimes sends an IME enter event without first having sent a keyboard enter event. b) seats may be IME capable while still lacking the keyboard capability. Such seats will *always* see IME enter events without a corresponding keyboard enter event.
This commit is contained in:
parent
d852178540
commit
96f23b4c64
4 changed files with 21 additions and 14 deletions
|
|
@ -81,6 +81,7 @@ struct seat {
|
|||
/* Focused terminals */
|
||||
struct terminal *kbd_focus;
|
||||
struct terminal *mouse_focus;
|
||||
struct terminal *ime_focus;
|
||||
|
||||
/* Keyboard state */
|
||||
struct wl_keyboard *wl_keyboard;
|
||||
|
|
@ -202,7 +203,6 @@ struct seat {
|
|||
} pending;
|
||||
} surrounding;
|
||||
|
||||
bool focused;
|
||||
uint32_t serial;
|
||||
} ime;
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue