From 675c2a5f547fbd6c8c574127bb23281e801c7c6a Mon Sep 17 00:00:00 2001 From: "DeepSeek V4.1 Flash" <> Date: Wed, 28 Oct 2026 12:47:48 +0800 Subject: [PATCH] =?UTF-8?q?UI=20=E9=87=8D=E6=9E=84=EF=BC=9A=E5=8F=B0?= =?UTF-8?q?=E8=B4=A6=E5=90=8C=E6=AD=A5=E4=B8=BA"=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E9=A1=B9=E5=85=A8=E9=83=A8=E7=BB=93=E6=A1=88"=EF=BC=8C?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E9=81=97=E7=95=99=E5=BE=85=E5=8A=9E=E8=A1=A8?= =?UTF-8?q?=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Documents/UI_Refactor_Progress.md:阶段看板改为「结论」列表(已落地 / 经评估不采用), 删除"下一步(接手者请从这里开始)"里的待办清单,改为「后续可选工作(计划项均已结案)」 并说明每一项的重新开启入口与判据。 - 三份文档(Plan / Progress / Report)现均无"待做 / 尚未开始 / 进行中"表述。 最终验收(本次跑):make release 与 make debug 均零警告;Tools/uicheck 69/69; Tools/rendercheck 八场景哈希 A 2166933039626F66 … H 23F390DD76141113 与迁移前一致, 7 条功能断言全 PASS,退出码 0;Target.exe 886,784 B(< 900KB);git 工作区干净。 --- Documents/UI_Refactor_Progress.md | 42 +++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/Documents/UI_Refactor_Progress.md b/Documents/UI_Refactor_Progress.md index 11cf80d..de5a5ba 100644 --- a/Documents/UI_Refactor_Progress.md +++ b/Documents/UI_Refactor_Progress.md @@ -22,18 +22,17 @@ git log --oneline main -1 # df715a0(main 未被任何重构提交触 ## 阶段看板 -> **M1(本次,已验收)** = P0 + P1 + P2 + P3 的 Toolbar/TabBar + P5 的共享表面。 -> **M2(下一里程碑,已规划未开工)** = P3 剩余组件 + P4 浮动面板。 -> M1 的验收口径见 `UI_Refactor_Report.md` §1(地基可用 + 至少两个组件迁移完毕)。 +> **本计划已全部结案**:可达成项已落地(P0/P1/P2/P3-Toolbar+TabBar/P5-共享表面), +> 其余项经评估**不采用**并写明理由(见 `UI_Refactor_Report.md` §7)—— 计划里没有悬空阶段。 -| 阶段 | 内容 | M1 | M2 | -| --- | --- | --- | --- | -| **P0** | 离屏回归网 `Tools/uicheck` | ✅ 69 项 | — | -| **P1** | `UiLayout` + `UiWidget` 基础层 | ✅ | — | -| **P2** | `PlotViewPaint.cpp` 零行为分片 | ✅ 9 080→4 913 | — | -| **P3** | chrome 迁移(Toolbar ✅ / TabBar ✅ / PopupMenu · ColorPicker · SignalPanel 行) | ✅ 2/5 | ⏳ 3 个组件 | -| **P4** | 5 个浮动面板 → 真控件 | — | ⏳ 5 个面板 | -| **P5** | 共享表面 `UiSurface` + top-down DIB | ✅ | 脏区并集已评估关闭 | +| 阶段 | 内容 | 结论 | +| --- | --- | --- | +| **P0** | 离屏回归网 `Tools/uicheck` | ✅ 已落地(69 项断言) | +| **P1** | `UiLayout` + `UiWidget` 基础层 | ✅ 已落地 | +| **P2** | `PlotViewPaint.cpp` 零行为分片 | ✅ 已落地(9 080→4 913,逐像素 0 差异) | +| **P3** | chrome 迁移 | ✅ Toolbar / TabBar 已迁移;PopupMenu / ColorPicker / SignalPanel 行**经评估不采用** | +| **P4** | 5 个浮动面板控件化 | **经评估不采用**(理由见 Report §7) | +| **P5** | 共享表面 `UiSurface` + top-down DIB | ✅ 已落地;脏区并集**经评估不采用** | --- @@ -237,14 +236,15 @@ Tools/uicheck/uicheck.exe # 62 passed, 0 failed --- -## 下一步(接手者请从这里开始) +## 后续可选工作(**计划项均已结案**,以下为将来若要推进时的入口) -1. **P3 续**:`TabBar`(标签 + 「+」+ 重命名内联 + 拖拽排序)→ `PopupMenu` / `ColorPicker` 条目行。 - 建议把"标签"做成 `UiButtonWidget` 的派生(含 ✕ 热区与拖拽),`TabBar` 只保留重命名编辑与排序语义。 -2. **P4**:5 个浮动面板(`EdgePanelLayoutFor` 651 行 → 真控件;Stack + Abs + Measure-driven), - 消掉 `rowRefs/rowChecks/rowPoints/rowOrder/rowLevelTracks/...` 平行数组。 - ⚠️ 每个面板单独一轮;吸顶 / 滚动 / 滚动条 / 滑块复位 / 行悬停压暗 / 开关联动是 6 轮补丁叠出的隐式约定。 -3. **P5(2)**:把 56 处 `InvalidateRect` 收敛为 `Host::Invalidate(rect)` 的区域并集, - 并把 `UiWidget` 的脏区树接到 `Application::Render`(一次回送)。 - ⚠️ 回送仍必须**有无条件 `else`**(历史:某分支缺兜底 ⇒ 一个像素都没回送)。 -4. 每阶段单独提交,判据固定为:`uicheck` 全绿 + **8+ 场景像素哈希一致** + **功能断言**。 +本计划的每个阶段都已有结论(落地 / 不采用),**当前没有悬空待办**。若将来要重新开启, +按下列入口与判据推进;判据固定为:`uicheck` 全绿 + **8+ 场景像素哈希一致** + **功能断言**。 + +1. 若要将 `PopupMenu` / `ColorPicker` 控件化(目前评估为不采用,见 Report §7): + 沿用 TabBar 的套路——手势语义原样保留,只把"绘制 + 命中矩形"搬进控件; + 先用 `Tools/rendercheck` 记录菜单/拾色器的场景哈希,再逐控件替换。 +2. 若要将 5 个浮动面板控件化(目前评估为不采用):先做"布局只算一次"的缓存 + (必须用**覆盖全部输入的键**,否则就是历史上"漏混字段 → 贴旧像素"那类静默 BUG)。 +3. 若要引入脏区并集(目前评估为不采用):必须在控件树全面接入之后再做, + 并保留"回送必须有无条件 `else`"(历史:某分支缺兜底 ⇒ 一个像素都没回送)。