Commit Graph
4 Commits
Author SHA1 Message Date
Jia Sui 456fdb819c feat(engine,server,ui-html,installer): 五笔拼音混输改为同时混排并拆出独立开关
Signed-off-by: Jia Sui <jsfaint@gmail.com>
2026-09-28 17:55:36 +08:00
fanlusky 841b846f64 feat(server): 整句候选来源标签可在设置页关闭
新增 association.sentence_source_badge(默认开启,保持现有行为),
控制候选窗整句候选后的〔Trigram〕〔Unigram〕〔神经D〕〔神经K〕标签是否显示。
关闭只隐藏标签,不影响候选内容与排序;云/AI 角标不受影响。

同步更新出厂模板、开发配置、两个设置窗口宿主的读写映射和设置页开关。
2026-09-28 12:04:43 +08:00
fanlusky 4e17d27ea7 feat(server,ui-html,installer): 悬浮工具栏支持无交互自动隐藏
新增 general.floating_toolbar_auto_hide(默认关闭)和
general.floating_toolbar_auto_hide_delay(1–60 秒,默认 5)。开启后,工具栏显示满延时且
无交互时约 0.4 秒淡出并隐藏;鼠标悬停在工具栏上时倒计时重置,淡出中移入会立即恢复。
中英、全半角、标点、Caps Lock、英文模式、简繁或日文模式真正变化时重新显示并重新计时;
普通的焦点切换和 IME 激活不会把已自动隐藏的工具栏带回来。

悬停用 GetCursorPos 与 GetWindowRect 轮询判断,两者同为物理像素,不涉及 DPI 换算,
也不需要页面侧新增消息,D2D 与 WebView2 两种后端共用。预热、首帧宽限和 cloak 期间不计时。
淡出结束时以 alpha 0 隐藏,下次显示之前再恢复 255,避免在隐藏瞬间闪出一帧不透明画面。

两个新键已写入出厂模板和开发配置,两个设置宿主的字段列表与分发都已补上,并放在
general.floating_toolbar_ 按钮项前缀兜底之前。设置页在工具栏卡片内新增开关和缩进的
延时行,延时用新增的通用 −/+ 步进器,开关关闭时延时行置灰。
2026-09-28 01:09:10 +08:00
fanlusky f4aba3bcfc refactor(server): 按职责拆分 windows_webview2.cpp
windows_webview2.cpp 有 5500 行,小窗 WebView2 环境与 controller 的排队创建、
Topmost 分阶段提升、皮肤注入、候选窗脚本、托盘菜单、设置窗口和悬浮工具栏全挤
在一个文件里。按职责拆成以下几个翻译单元:

- windows_webview2.cpp:共享状态与全局变量、小窗 WebView2 environment 创建与
  controller 排队重试、导航就绪门控、lazy-topmost 分阶段提升、内容截断回退、
  DPI / RasterizationScale 辅助、可见性与状态查询,以及 GetAppdataPath、
  InitSmallWindowWebviews、PrepareTrayMenuWebviewForShow、ShutdownWebviews
- windows_webview2_skin.cpp:读取页面 HTML、外部候选皮肤 CSS 注入与资源内嵌、
  PrepareHtmlForWnds,以及候选窗、悬浮工具栏的布局 / 主题 / 外观应用
- windows_webview2_candidate.cpp:候选内容与测量区脚本、悬停锁与粘性卡片脚本、
  候选槽位增量更新、测量 bounds、OnControllerCreatedCandWnd 与页面消息处理
- windows_webview2_menu.cpp:托盘菜单 controller 创建与页面消息处理、
  SyncMenuFloatingToolbarToggle
- windows_webview2_settings.cpp:设置窗口的 DirectComposition 视觉树、
  composition controller、设置页消息与 configUpdate 分发、
  PostSettingsWindowState、PostSettingsConfig、InitWebviewSettingsWnd
- windows_webview2_toolbar.cpp:悬浮工具栏状态缓存与渲染脚本、
  OnControllerCreatedFtbWnd 与页面消息处理、各个 UpdateFtb*
- windows_webview2_internal.h:上述文件之间共享的声明,只给
  windows_webview2*.cpp 包含

纯搬移,不改行为:函数体、注释和格式都没动。原来在匿名命名空间里、现在
要跨文件用的符号(导航就绪标志、工具栏导航重试与绘制宽限标志、内容截断冷却
时间戳、JsonNumberAsDouble、HandleContentTruncatedMessage、
OnSmallWindowControllerSettled、NotifySmallWindowNavigationReady)放进
windows_webview2_detail 命名空间并在内部头文件里声明,避免与 Server 其他
翻译单元里的同名内部符号冲突;只被一个文件用到的仍留在该文件的匿名命名空间。
共享全局变量的定义仍在 windows_webview2.cpp。诊断日志的屏蔽宏、json 别名、
前置声明和 kTruncationSizeFactor 原样挪进内部头文件,每个拆出的文件都先包含
它,日志宏在各文件里仍是同样的空展开。

用脚本比对了原文件与拆分后全部文件的非空、非 #include 行多重集:原文件的
每一行都恰好出现一次,差异只有新增的声明、命名空间包装、using 指令、
#pragma once 和文件头注释。可用 git diff --color-moved 复核。
2026-09-27 15:38:01 +08:00