From cd6d84d4669e317380474c818474df5bf45a5dd9 Mon Sep 17 00:00:00 2001 From: Qijia Liu Date: Tue, 12 May 2026 22:51:55 -0400 Subject: [PATCH 1/2] fix: don't activate default im when switch focus within app --- macosfrontend/macosfrontend.cpp | 7 ++++++- macosfrontend/macosfrontend.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/macosfrontend/macosfrontend.cpp b/macosfrontend/macosfrontend.cpp index ca65c39..b7fb729 100644 --- a/macosfrontend/macosfrontend.cpp +++ b/macosfrontend/macosfrontend.cpp @@ -287,7 +287,12 @@ void MacosFrontend::focusIn(ICUUID uuid, bool isPassword) { auto program = ic->program(); FCITX_INFO() << "Focus in " << program; if (!program.empty()) { - useAppDefaultIM(program); + // Focusing on another input field in the same app shouldn't activate + // default im. + if (program != lastFocusedApp_) { + useAppDefaultIM(program); + lastFocusedApp_ = program; + } useVimMode(program, ic); } } diff --git a/macosfrontend/macosfrontend.h b/macosfrontend/macosfrontend.h index 55b6aef..0d17056 100644 --- a/macosfrontend/macosfrontend.h +++ b/macosfrontend/macosfrontend.h @@ -116,6 +116,7 @@ class MacosFrontend : public AddonInstance { eventHandlers_; std::string statusItemText; std::unordered_map appDefaultIMCache_; + std::string lastFocusedApp_; void updateStatusItemText(); inline MacosInputContext *findIC(ICUUID); From 32d13a2c805243ce60b2e6797d5e6e1453e24415 Mon Sep 17 00:00:00 2001 From: Qijia Liu Date: Tue, 12 May 2026 23:30:04 -0400 Subject: [PATCH 2/2] fix review comments --- macosfrontend/macosfrontend.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/macosfrontend/macosfrontend.cpp b/macosfrontend/macosfrontend.cpp index b7fb729..044c5c3 100644 --- a/macosfrontend/macosfrontend.cpp +++ b/macosfrontend/macosfrontend.cpp @@ -288,13 +288,13 @@ void MacosFrontend::focusIn(ICUUID uuid, bool isPassword) { FCITX_INFO() << "Focus in " << program; if (!program.empty()) { // Focusing on another input field in the same app shouldn't activate - // default im. + // default IM. if (program != lastFocusedApp_) { useAppDefaultIM(program); - lastFocusedApp_ = program; } useVimMode(program, ic); } + lastFocusedApp_ = program; } std::string MacosFrontend::commitComposition(ICUUID uuid) {