sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 1ab573bf54eec653123f3c6f26ae14c3fcac605a
parent 0a740a24d98beeb3080552c29a64be6027ccd442
Author: Attila Fidan <dev@print0.net>
Date:   Fri, 13 Jun 2025 18:02:55 +0000

text_input: Ignore enable requests from unfocused windows

Unfocused windows shouldn't be allowed to activate the IM.

This fixes an issue with swaymsg invocations that contain several
commands which result in multiple swift focus changes. An application
briefly gets text input focus, sends an enable request, then sway
processes it and activates the IM only after the commands are all
finished and focus is on something else which did not send an enable
request.

Diffstat:
Msway/input/text_input.c | 4++++
1 file changed, 4 insertions(+), 0 deletions(-)

diff --git a/sway/input/text_input.c b/sway/input/text_input.c @@ -248,6 +248,10 @@ static void relay_send_im_state(struct sway_input_method_relay *relay, static void handle_text_input_enable(struct wl_listener *listener, void *data) { struct sway_text_input *text_input = wl_container_of(listener, text_input, text_input_enable); + if (text_input->input->focused_surface == NULL) { + sway_log(SWAY_DEBUG, "Enabling text input, but no longer focused"); + return; + } if (text_input->relay->input_method == NULL) { sway_log(SWAY_INFO, "Enabling text input when input method is gone"); return;