From 1ab573bf54eec653123f3c6f26ae14c3fcac605a Mon Sep 17 00:00:00 2001 From: Attila Fidan Date: Fri, 13 Jun 2025 18:02:55 +0000 Subject: [PATCH] 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. --- sway/input/text_input.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sway/input/text_input.c b/sway/input/text_input.c index 0eb76eb16..2729db625 100644 --- 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;