ime: don’t commit IME changes when we don’t have IME focus

Fixes log spamming in Sway:

  00:54:07.780 [DEBUG] [wlr] [types/wlr_text_input_v3.c:181] Text input commit received without focus
  00:54:07.780 [INFO] [sway/input/text_input.c:127] Inactive text input tried to commit an update

Closes #384
This commit is contained in:
Daniel Eklöf 2021-03-02 09:01:40 +01:00
parent c3880af593
commit 3f19ee4d92
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 12 additions and 0 deletions

11
ime.c
View file

@ -26,6 +26,7 @@ enter(void *data, struct zwp_text_input_v3 *zwp_text_input_v3,
/* The main grid is the *only* input-receiving surface we have */
xassert(seat->kbd_focus != NULL);
seat->ime.focused = true;
ime_enable(seat);
}
@ -41,6 +42,7 @@ leave(void *data, struct zwp_text_input_v3 *zwp_text_input_v3,
term_ime_reset(term);
ime_disable(seat);
seat->ime.focused = false;
}
static void
@ -334,6 +336,9 @@ ime_send_cursor_rect(struct seat *seat, struct terminal *term)
if (unlikely(seat->wayl->text_input_manager == NULL))
return;
if (!seat->ime.focused)
return;
if (!term->ime.enabled)
return;
@ -367,6 +372,9 @@ ime_enable(struct seat *seat)
struct terminal *term = seat->kbd_focus;
xassert(term != NULL);
if (!seat->ime.focused)
return;
if (!term->ime.enabled)
return;
@ -397,6 +405,9 @@ ime_disable(struct seat *seat)
if (unlikely(seat->wayl->text_input_manager == NULL))
return;
if (!seat->ime.focused)
return;
ime_reset(seat);
zwp_text_input_v3_disable(seat->wl_text_input);