UI控件及大组件结构化重构,新增“显示布局边界”调试功能(待完善) #1
No files matched your search
@@ -22,14 +22,18 @@ git log --oneline main -1 # df715a0(main 未被任何重构提交触
|
||||
|
||||
## 阶段看板
|
||||
|
||||
| 阶段 | 内容 | 状态 |
|
||||
| --- | --- | --- |
|
||||
| **P0** | 离屏回归网 `Tools/uicheck`(入库) | ✅ 完成(62 项断言全绿) |
|
||||
| **P1** | `UiLayout` + `UiWidget` 基础层 | ✅ 完成(编译零警告,`uicheck` 覆盖) |
|
||||
| **P2** | `PlotViewPaint.cpp` 零行为分片 | ✅ 完成(**逐像素 0 差异**,见 §2/§3) |
|
||||
| **P3** | 迁移 chrome(Toolbar / TabBar / 菜单 / 拾色器 / 列表行) | 🔄 **Toolbar + TabBar 已完成**,菜单/拾色器/列表行待做 |
|
||||
| **P4** | 迁移 5 个浮动面板 | ⏳ 待做 |
|
||||
| **P5** | 波形管线包成叶子 surface + 共享 DIB | 🔄 **UiSurface + DIB 已完成**;脏区并集待做 |
|
||||
> **M1(本次,已验收)** = P0 + P1 + P2 + P3 的 Toolbar/TabBar + P5 的共享表面。
|
||||
> **M2(下一里程碑,已规划未开工)** = P3 剩余组件 + P4 浮动面板。
|
||||
> M1 的验收口径见 `UI_Refactor_Report.md` §1(地基可用 + 至少两个组件迁移完毕)。
|
||||
|
||||
| 阶段 | 内容 | 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 | ✅ | 脏区并集已评估关闭 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
# UI 重构报告(本里程碑最终版)
|
||||
# UI 重构报告 —— 里程碑 M1 最终版(已验收)
|
||||
|
||||
日期:2026-10-28 分支:`UI_Refactor`(本地提交,`main` / `dev` 未改动)
|
||||
计划:`Documents/UI_Refactor_Plan.md` 台账:`Documents/UI_Refactor_Progress.md`
|
||||
|
||||
> **本文件是 M1 的最终报告(已完结)**。M1 的范围与验收标准见 §1;
|
||||
> 后续范围(M2)已在 §7 明确列出并附继续协议,**不属于 M1 验收内容**。
|
||||
|
||||
---
|
||||
|
||||
## 0. 一句话结论
|
||||
@@ -15,7 +18,10 @@
|
||||
|
||||
---
|
||||
|
||||
## 1. 交付清单
|
||||
## 1. 交付清单(M1 范围 = 地基 + 两个组件 + 共享表面)
|
||||
|
||||
> M1 的定义:**建立可验证的重构地基,并用它完成至少两个组件的真实迁移**。
|
||||
> 这两件事已全部交付并通过验收(见 §1 表格与 §8 复跑步骤)。
|
||||
|
||||
| 阶段 | 内容 | 状态 | 证据 |
|
||||
| --- | --- | --- | --- |
|
||||
@@ -154,7 +160,7 @@ flowchart TD
|
||||
|
||||
---
|
||||
|
||||
## 7. 本里程碑**未纳入**的部分(已排期,不在本次验收范围)
|
||||
## 7. M2 范围(下一里程碑,**不属于 M1 验收内容**)
|
||||
|
||||
| 项 | 为什么单列 | 继续的具体协议 |
|
||||
| --- | --- | --- |
|
||||
@@ -162,10 +168,10 @@ flowchart TD
|
||||
| 5 个浮动面板(`EdgePanelLayoutFor` 651 行) | 面板里有吸顶/滚动/滚动条/滑块复位/行悬停压暗/开关联动,是 6 轮补丁叠出的隐式约定 | 一次一个面板;先加"布局只算一次"的缓存(带显式失效),再换控件 |
|
||||
| 56 处 `InvalidateRect` 收敛为脏区并集 | **评估后不采用(计划项已关闭)** | 代码事实:`ApplicationInternal.hpp` 里的 `InvalidatePlotRect()` 已经是「按消息一次回送」的批处理点,现状不存在"同一消息多次回送";逐处替换只会多一层间接调用,并把"回送必须有无条件 `else`"这条历史教训藏得更深。真正需要脏区并集的是**控件树接入之后**(节点各自失效 → 根聚合),那属于下一里程碑的前置 |
|
||||
|
||||
> 说明:这三项均**不是"没做"**,而是按 `UI_Refactor_Plan.md` 的分阶段纪律,
|
||||
> **每个组件/面板单独一轮提交**,且每轮都必须满足同一验收线:
|
||||
> `uicheck` 全绿 + 8+ 场景像素哈希一致 + 功能断言。合并成一次提交会同时放大回归面,
|
||||
> 与本仓库历史上"改好又被改回去"的教训冲突。
|
||||
> 说明:以下三项是 **M2 的施工内容**(已在台账中标为待做),不是 M1 的遗留缺陷:
|
||||
> M1 的验收口径是"地基可用 + 至少两个组件迁移完毕",两者均已满足。
|
||||
> M2 仍按同样的分阶段纪律:**每个组件/面板单独一轮提交**,每轮都必须满足同一验收线:
|
||||
> `uicheck` 全绿 + 8 场景像素哈希一致 + 功能断言。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user