diff --git a/ui-html/webview2/settings/ime-settings/src/modules/config-sync.ts b/ui-html/webview2/settings/ime-settings/src/modules/config-sync.ts index 00b9808b..5779f0a7 100644 --- a/ui-html/webview2/settings/ime-settings/src/modules/config-sync.ts +++ b/ui-html/webview2/settings/ime-settings/src/modules/config-sync.ts @@ -100,6 +100,11 @@ function applyConfigData(data: Record): void { if (typeof data?.input?.paired_punctuation === 'boolean') { applyToggleState('pairedPunctuationToggleBtn', data.input.paired_punctuation); } + if (data?.input?.punctuation_lock === 'chinese' || data?.input?.punctuation_lock === 'english' || + data?.input?.punctuation_lock === 'follow') { + applyToggleState('alwaysChinesePunctuationToggleBtn', data.input.punctuation_lock === 'chinese'); + applyToggleState('alwaysEnglishPunctuationToggleBtn', data.input.punctuation_lock === 'english'); + } if (typeof data?.general?.candidate_translations === 'boolean') { applyToggleState('candidateTranslationsToggleBtn', data.general.candidate_translations); document.getElementById('candidateTranslationApiOptions')?.classList.toggle( diff --git a/ui-html/webview2/settings/ime-settings/src/modules/input.ts b/ui-html/webview2/settings/ime-settings/src/modules/input.ts index a7d28681..78f21b51 100644 --- a/ui-html/webview2/settings/ime-settings/src/modules/input.ts +++ b/ui-html/webview2/settings/ime-settings/src/modules/input.ts @@ -198,6 +198,22 @@ export function setupInput(): void { setupToggleButton('wordToCharacterToggleBtn', (active) => { updateConfig('input.word_to_character', active); }); + setupToggleButton('alwaysChinesePunctuationToggleBtn', (active) => { + if (active) { + applyToggleState('alwaysEnglishPunctuationToggleBtn', false); + updateConfig('input.punctuation_lock', 'chinese'); + } else { + updateConfig('input.punctuation_lock', 'follow'); + } + }); + setupToggleButton('alwaysEnglishPunctuationToggleBtn', (active) => { + if (active) { + applyToggleState('alwaysChinesePunctuationToggleBtn', false); + updateConfig('input.punctuation_lock', 'english'); + } else { + updateConfig('input.punctuation_lock', 'follow'); + } + }); setupToggleButton('smartPunctuationToggleBtn', (active) => { updateConfig('input.smart_punctuation', active); }); diff --git a/ui-html/webview2/settings/ime-settings/src/partials/input.html b/ui-html/webview2/settings/ime-settings/src/partials/input.html index 44e14242..f4d805c6 100644 --- a/ui-html/webview2/settings/ime-settings/src/partials/input.html +++ b/ui-html/webview2/settings/ime-settings/src/partials/input.html @@ -239,6 +239,28 @@ +
+
+
+
始终使用中文标点
+
切换中英文时仍使用中文标点,与下方选项互斥
+
+
+
+
+
+
+
+
+
始终使用英文标点
+
切换中英文时仍使用英文标点,与上方选项互斥
+
+
+
+
+
+
+
diff --git a/ui-html/webview2/settings/ime-settings/src/styles/modules/input.css b/ui-html/webview2/settings/ime-settings/src/styles/modules/input.css index 286a236a..7cccc718 100644 --- a/ui-html/webview2/settings/ime-settings/src/styles/modules/input.css +++ b/ui-html/webview2/settings/ime-settings/src/styles/modules/input.css @@ -39,6 +39,14 @@ min-width: 110px; } +.punctuation-lock-section .section-header { + padding: 4px 0; +} + +.punctuation-lock-section .input-option-divider { + margin: 12px 0; +} + .input-setting-description { color: var(--text-muted); font-size: 12px;