trime icon indicating copy to clipboard operation
trime copied to clipboard

主题中自定义的has_menu不起作用

Open goodaniu opened this issue 1 month ago • 2 comments

摘要 / Summary

升级最新每夜版后,我用has_menu设置的上下页键功能,和首选、次选候选词标签,均不起作用。 但改成composing又会起作用。

重现步骤 / Steps to Reproduce

正常输入

预期行为 / Expected Behavior

has_menu功能恢复正常

日志 / Log

com.osfans.trime-2025-12-01T04_55_53Z.txt

截图 / Screenshot

Screenshot_20251201_131120_com.huawei.search.jpg

No response

附加信息 / Additional Context

No response

系统版本 / OS Version

HarmonyOS 4.2

应用版本 / App Version

v3.3.7-35-g2cf90f49-release

构建信息 / Build Information

构建者:Nightly CI Git 仓库:https://github.com/osfans/trime 构建 Git 哈希:2cf90f495845b425e9dd2badf116c9fd8dd3c155 构建时间:2025年11月30日 00:07:34

goodaniu avatar Dec 01 '25 05:12 goodaniu

發現輸入文字後發出的的 RimeMessage 都是 RimeMessage.CandidateMenuMessage,而非RimeMessage.CandidateMenuMessage

https://github.com/osfans/trime/blob/4c7068d13a111570157f06822d115617ecdd6afd/app/src/main/java/com/osfans/trime/core/Rime.kt#L256-L287

因此 Rime.menuCache 沒有更新,當中的 Rime.menuCache.candidate 永遠 isEmpty() == true,令 Key.checkAction() 中不能成功返回 keyActions[KeyBehavior.HAS_MENU]

原因應該是這樣,但我不懂怎樣修才好。改 jni 還是改 handleRimeMessage() 才好? @WhiredPlanck

goofyz avatar Dec 05 '25 08:12 goofyz

@goofyz 应该是 CanidateListMessage 吧,这是我单独为候选栏新增的事件,其实应该在这个事件发生时也更新一下 menuCached,或者可以单独缓存一个候选词列表是否为空的状态表示是否 has_menu

WhiredPlanck avatar Dec 06 '25 01:12 WhiredPlanck