From e7ed8f0301cfa32f628a50427e669cc6f30d0397 Mon Sep 17 00:00:00 2001 From: fanlusky <1730976608@qq.com> Date: Sat, 20 Jun 2026 11:21:30 +0800 Subject: [PATCH] Render shuangpin segmentation when shuangpin_preedit_mode is set to shuangpin --- server/MetasequoiaImeEngine | 2 +- server/assets/config/config.toml | 4 ++-- server/src/session/engine_input_session.cpp | 11 ++++++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/server/MetasequoiaImeEngine b/server/MetasequoiaImeEngine index 32f872a1..856b3b75 160000 --- a/server/MetasequoiaImeEngine +++ b/server/MetasequoiaImeEngine @@ -1 +1 @@ -Subproject commit 32f872a103efa3e52201c29b39ce8cc13006a97e +Subproject commit 856b3b75b23eaaac8e43268f91c62d497150e7a8 diff --git a/server/assets/config/config.toml b/server/assets/config/config.toml index 92bcd644..8ad5f35c 100644 --- a/server/assets/config/config.toml +++ b/server/assets/config/config.toml @@ -46,14 +46,14 @@ candidate_window_layout = "vertical" # 输入 # [input] -# 会话后端,可选:"legacy", "engine" # 组合说明: # legacy + shuangpin -> 使用旧版双拼会话实现(当前最稳定) # legacy + quanpin -> 自动切换为新版引擎全拼会话 # engine + shuangpin -> 使用新版引擎双拼会话 # engine + quanpin -> 使用新版引擎全拼会话 # 任意 backend + wubi -> 当前暂不支持 -session_backend = "legacy" +# 会话后端,可选:"legacy", "engine" +session_backend = "engine" # 输入方案,可选:"quanpin", "shuangpin", "wubi" schema = "shuangpin" # engine + shuangpin 时的 preedit 显示方式,可选:"quanpin", "shuangpin" diff --git a/server/src/session/engine_input_session.cpp b/server/src/session/engine_input_session.cpp index 67810e7f..bb84189e 100644 --- a/server/src/session/engine_input_session.cpp +++ b/server/src/session/engine_input_session.cpp @@ -65,16 +65,16 @@ const std::string &EngineInputSession::get_pure_pinyin_sequence() const const std::string &EngineInputSession::get_pinyin_segmentation() const { - return request().segmentation; + return request().normalized_segmentation.empty() ? request().segmentation : request().normalized_segmentation; } std::string EngineInputSession::get_pinyin_segmentation_with_cases() const { if (is_shuangpin() && GetConfiguredShuangpinPreeditMode() == "shuangpin") { - return request().raw_input; + return request().raw_segmentation.empty() ? request().raw_input : request().raw_segmentation; } - return request().segmentation; + return request().normalized_segmentation.empty() ? request().segmentation : request().normalized_segmentation; } std::string EngineInputSession::get_quanpin() const @@ -138,8 +138,9 @@ IInputSession::SelectionTransition EngineInputSession::advance_composition_after (void)selected_pinyin; SelectionTransition transition; transition.full_pure_pinyin = request().normalized_input; - transition.current_segmentation = request().segmentation; - transition.current_segmentation_with_cases = request().segmentation; + transition.current_segmentation = + request().normalized_segmentation.empty() ? request().segmentation : request().normalized_segmentation; + transition.current_segmentation_with_cases = get_pinyin_segmentation_with_cases(); transition.continues_composition = false; return transition; }