From fbac65c69597788477ec10e4a46705179adb85c8 Mon Sep 17 00:00:00 2001 From: ENOA-ANSUL-EDEN Date: Mon, 5 Jan 2026 22:44:54 +0800 Subject: [PATCH] feat: commit composition on keyboard switch with `ascii_mode` change --- .../java/com/osfans/trime/ime/keyboard/KeyboardWindow.kt | 5 ++++- .../main/java/com/osfans/trime/ime/symbol/LiquidWindow.kt | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/osfans/trime/ime/keyboard/KeyboardWindow.kt b/app/src/main/java/com/osfans/trime/ime/keyboard/KeyboardWindow.kt index 98226dbb7d..621049134a 100644 --- a/app/src/main/java/com/osfans/trime/ime/keyboard/KeyboardWindow.kt +++ b/app/src/main/java/com/osfans/trime/ime/keyboard/KeyboardWindow.kt @@ -131,7 +131,10 @@ class KeyboardWindow( val targetMode = if (it.resetAsciiMode) it.asciiMode else it.lastAsciiMode if (currentMode != targetMode) { - service.postRimeJob { setRuntimeOption("ascii_mode", targetMode) } + service.postRimeJob { + commitComposition() + setRuntimeOption("ascii_mode", targetMode) + } } // TODO:为避免过量重构,这里暂时将 currentKeyboard 同步到 KeyboardSwitcher diff --git a/app/src/main/java/com/osfans/trime/ime/symbol/LiquidWindow.kt b/app/src/main/java/com/osfans/trime/ime/symbol/LiquidWindow.kt index 1a08363001..4aec1e5283 100644 --- a/app/src/main/java/com/osfans/trime/ime/symbol/LiquidWindow.kt +++ b/app/src/main/java/com/osfans/trime/ime/symbol/LiquidWindow.kt @@ -120,7 +120,8 @@ class LiquidWindow( val (isAsciiMode, isAsciiPunch) = it.statusCached.run { isAsciiMode to isAsciiPunct } if (isAsciiMode) it.setRuntimeOption("ascii_mode", false) if (isAsciiPunch) it.setRuntimeOption("ascii_punch", false) - commonKeyboardActionListener.listener.onText("{Escape}$symbol") + it.clearComposition() + it.simulateKeySequence(symbol) if (isAsciiPunch) it.setRuntimeOption("ascii_punch", true) ContextCompat.getMainExecutor(service).execute { windowManager.attachWindow(KeyboardWindow)