pendingpurpose was never cleared, and sway sends content_type only when the text input asked for one: active_features is frozen at the enable commit (wlr_text_input_v3.c) and relay_send_im_state tests it before sending. So a client that sets no content type leaves the last client's purpose standing -- and after a GTK password entry that purpose is password, so every key in the next window was forwarded raw and strans looked dead there until a client that does declare one took the focus. A purpose is per activation, as it is per context in ibus.c. Clearing it on activate is enough: the content type, if any, arrives after the activate and before the done that applies both. The sway runs could not have found this; the password client was GTK, which always declares. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
17 KiB
17 KiB