Don't call text-input functions when the compositor does not implement the interface #260

Manually merged
dnkl merged 2 commits from no-ime into master 1 year ago
  1. 2
      CHANGELOG.md
  2. 6
      ime.c
  3. 7
      wayland.c

2
CHANGELOG.md

@ -36,6 +36,8 @@
* Exit when the client application terminates, not when the TTY file
descriptor is closed.
* Crash on compositors not implementing the _text input_ interface
(https://codeberg.org/dnkl/foot/issues/259).
### Security

6
ime.c

@ -327,6 +327,9 @@ ime_reset(struct seat *seat)
void
ime_enable(struct seat *seat)
{
if (unlikely(seat->wayl->text_input_manager == NULL))
return;
struct terminal *term = seat->kbd_focus;
assert(term != NULL);
@ -348,6 +351,9 @@ ime_enable(struct seat *seat)
void
ime_disable(struct seat *seat)
{
if (unlikely(seat->wayl->text_input_manager == NULL))
return;
ime_reset(seat);
zwp_text_input_v3_disable(seat->wl_text_input);

7
wayland.c

@ -1130,6 +1130,13 @@ wayl_init(const struct config *conf, struct fdm *fdm)
goto out;
}
#if defined(FOOT_IME_ENABLED) && FOOT_IME_ENABLED
if (wayl->text_input_manager == NULL) {
LOG_WARN("text input interface not implemented by compositor; "
"IME will be disabled");
}
#endif
/* Trigger listeners registered when handling globals */
wl_display_roundtrip(wayl->display);

Loading…
Cancel
Save