From a0c20a58c4bc5b9c25a0f6b23ec403ef64051044 Mon Sep 17 00:00:00 2001 From: jrmoulton Date: Thu, 9 Oct 2025 03:04:37 -0600 Subject: [PATCH] macOS:IME prefer insertText over keyDown when ime is enabled Fixes #3342 --- winit-appkit/src/view.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/winit-appkit/src/view.rs b/winit-appkit/src/view.rs index 17bb40e399..17e78c8c1c 100644 --- a/winit-appkit/src/view.rs +++ b/winit-appkit/src/view.rs @@ -390,9 +390,11 @@ define_class!( let is_control = string.chars().next().is_some_and(|c| c.is_control()); - // Commit only if we have marked text. - if self.hasMarkedText() && self.is_ime_enabled() && !is_control { - self.queue_event(WindowEvent::Ime(Ime::Preedit(String::new(), None))); + if self.ivars().ime_capabilities.get().is_some() && !is_control { + if self.hasMarkedText() { + // clear preedit only if we have marked text. + self.queue_event(WindowEvent::Ime(Ime::Preedit(String::new(), None))); + } self.queue_event(WindowEvent::Ime(Ime::Commit(string))); self.ivars().ime_state.set(ImeState::Committed); }