UI 重构:文档纳入 TabBar 迁移(P3 完成 2/5)
- Documents/UI_Refactor_Progress.md:阶段看板 P3 标记为「Toolbar + TabBar 已完成」; 新增第 6 条提交记录(TabBar 新旧实现对照 + 手势语义未变的说明 + 8 场景哈希 + 4 条交互断言)。 - Documents/UI_Refactor_Report.md:交付表 P3 改为 2/5;关键数字(已迁移组件、产物 886,784 B); 提交清单加入 cd3a3fa;新增 5.1 节描述 TabBar 迁移与双轨验证。 验证:make release / make debug 零警告;Tools/uicheck 69/69;8 场景像素哈希与迁移前一致。
This commit is contained in:
1 parent
c3b79a6d2c
commit
f242fb076c
2 files changed
+36
-4
No files matched your search
@@ -27,7 +27,7 @@ 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 已完成**,其余待做 |
|
||||
| **P3** | 迁移 chrome(Toolbar / TabBar / 菜单 / 拾色器 / 列表行) | 🔄 **Toolbar + TabBar 已完成**,菜单/拾色器/列表行待做 |
|
||||
| **P4** | 迁移 5 个浮动面板 | ⏳ 待做 |
|
||||
| **P5** | 波形管线包成叶子 surface + 共享 DIB | 🔄 **UiSurface + DIB 已完成**;脏区并集待做 |
|
||||
|
||||
@@ -218,6 +218,21 @@ Tools/uicheck/uicheck.exe # 62 passed, 0 failed
|
||||
|
||||
---
|
||||
|
||||
### 6. `P3(2)`:TabBar 迁移到控件树(**逐像素 0 差异**)
|
||||
|
||||
| 旧实现 | 新实现 |
|
||||
| --- | --- |
|
||||
| `m_hoverIndex` / `m_hoverClose` / `m_hoverAdd` | 删除;悬停由框架悬停链维护,脏区用 `root->TakeDirty()` |
|
||||
| `Paint` 一次画全条 | 根控件(底色)+ 标签控件 + 「+」控件 + **命中透明覆盖层**(拖拽条 + 分隔线,必须最后画) |
|
||||
| 关闭 ✕ 热区手算 | 标签控件用 `HoverPoint()` 自行判定 |
|
||||
|
||||
**手势语义一字未改**(自行判双击、3px 拖拽阈值、`DropIndexAt`、✕ 的“移开取消”)。
|
||||
|
||||
验证:8 场景哈希一致;4 条交互断言全 PASS
|
||||
(hover 只脏一次 / 「+」新建 / 点击切换 active=0 / ✕ 关闭 2→1);`uicheck` 69/69;产物 886,784 B。
|
||||
|
||||
---
|
||||
|
||||
## 下一步(接手者请从这里开始)
|
||||
|
||||
1. **P3 续**:`TabBar`(标签 + 「+」+ 重命名内联 + 拖拽排序)→ `PopupMenu` / `ColorPicker` 条目行。
|
||||
|
||||
@@ -22,13 +22,15 @@
|
||||
| **P0** | 入库离屏回归网 `Tools/uicheck` | ✅ | 69 项断言全绿,可一键复跑 |
|
||||
| **P1** | `UiLayout`(矩形/对齐/Stack/Flow/布局缓存)+ `UiWidget`(控件树基类) | ✅ | 69 项断言覆盖布局数学、脏区跳过、派发、裁剪、动画 |
|
||||
| **P2** | `PlotView` 实现按关注点重分为七个分片 | ✅ | `PlotViewPaint.cpp` 9 080 → 4 913(−46%);**逐像素 0 差异** |
|
||||
| **P3** | Toolbar 迁移到控件树(新增 `UiButtonWidget`) | ✅ 1/5 组件 | 8 场景像素哈希一致 + 3 条功能断言 |
|
||||
| **P3** | chrome 迁移到控件树 | 🔄 **2/5:Toolbar + TabBar 已完成** | 各 8 场景像素哈希一致 + 功能断言 |
|
||||
| **P5(1)** | 共享表面 `UiSurface` + 后备缓冲改 top-down 32bpp DIB | ✅ | 8 场景哈希不变 + 7 条 `UiSurface` 断言 |
|
||||
| 附带 | 修复退出期 `WM_PAINT` 在已关闭 GDI+ 上绘制导致的崩溃 | ✅ | `Shutdown()` 顺序调整 + `Render()` 保护 |
|
||||
|
||||
提交(全部在 `UI_Refactor`):
|
||||
|
||||
```
|
||||
cd3a3fa P3(2):TabBar 迁移到控件树(逐像素 0 差异 + 4 条交互断言)
|
||||
510c003 文档:里程碑最终报告 + 计划阶段状态
|
||||
0344c30 文档:报告/台账更新为 P0–P3 + P5(1)
|
||||
955666b P5(1):共享表面 UiSurface + top-down 32bpp DIB;修复退出期绘制崩溃
|
||||
e14caec 文档:报告更新为 P0–P3
|
||||
@@ -64,9 +66,9 @@ git log --oneline main -1 # df715a0
|
||||
| 最大源文件 | `PlotViewPaint.cpp` 9 080 行 | 4 913 行(**−46%**) |
|
||||
| `PlotView` 实现文件数 | 4 | **7(按职责)** |
|
||||
| 自动化 UI 探针 | **0** | **69 项断言(入库)** |
|
||||
| 已迁移到控件树的组件 | 0 | **Toolbar** |
|
||||
| 已迁移到控件树的组件 | 0 | **Toolbar + TabBar**(2/5,各含像素 A/B + 功能断言) |
|
||||
| 共享后台位图 | compatible bitmap(无像素指针) | **top-down 32bpp DIB + `UiSurface`** |
|
||||
| 产物 | 873 984 B | **883 200 B**(< 900 KB 阈值) |
|
||||
| 产物 | 873 984 B | **886 784 B**(< 900 KB 阈值) |
|
||||
| 产品像素差异 | — | **0**(分片 3 场景 + 迁移 8 场景哈希逐一相同) |
|
||||
|
||||
---
|
||||
@@ -125,6 +127,21 @@ flowchart TD
|
||||
|
||||
**双轨验证**:8 场景像素哈希一致 + 3 条功能断言(定位按钮 / 点击生效 / 移出松开不触发)。
|
||||
|
||||
### 5.1 TabBar 迁移(同一套路)
|
||||
|
||||
| 旧实现 | 新实现 |
|
||||
| --- | --- |
|
||||
| `m_hoverIndex` / `m_hoverClose` / `m_hoverAdd` 三个手工下标 | 删掉;悬停由框架的**悬停链**维护,脏区由 `root->TakeDirty()` 判断 |
|
||||
| `Paint` 一次性画全条(底色/标签/「+」/拖拽条/分隔线) | 根控件(底色)+ 标签子控件 + 「+」子控件 + **命中透明的覆盖层**(拖拽指示条 + 分隔线,必须最后画) |
|
||||
| 关闭 ✕ 热区靠手算 | 标签控件用基类的 `HoverPoint()` 自行判定 |
|
||||
|
||||
**手势语义一字未改**:自行判双击(`GetDoubleClickTime`)、3px 拖拽阈值、`DropIndexAt`、
|
||||
关闭 ✕ 的"移开取消"。
|
||||
|
||||
**双轨验证**:8 场景像素哈希一致 + **4 条交互断言**
|
||||
(`tabbar-hover-marks-dirty (1,0)`、`tabbar-add-creates-tab (1→2)`、
|
||||
`tabbar-click-selects-tab (active=0)`、`tabbar-close-removes-tab (2→1)`)。
|
||||
|
||||
---
|
||||
|
||||
## 6. 共享表面(P5 已就位部分)
|
||||
|
||||
Reference in new issue
Block a user