refactor(application): 拆分 2165 行的 ApplicationCommands.cpp 为 4 个职责分片
原文件混杂了标签页、派生信号、菜单、工具栏、键盘鼠标、布局调试绘制六类职责,
是本项目最大的“大杂烩”单文件之一。按职责纯搬移(零逻辑改动):
- ApplicationTabs.cpp (355 行): 标签页新建/关闭/切换/重排、视图同步、窗口标题、
标签栏结果回调、标签页右键菜单、待提交改名。
- ApplicationDerive.cpp (786 行): 派生烘焙、重采样、选区截取(新建/就地)、克隆(含带调整)。
- ApplicationMenus.cpp (409 行): 绘图区右键菜单、菜单数值回写、主题切换、设置菜单、
菜单结果派发。
- ApplicationCommands.cpp (642 行): 分组/信号增删、移动与重排、文件对话框、工具栏动作、
键盘鼠标分发、布局边界绘制。
Makefile 按目录通配收集,无需登记新文件。
验证:release 零 error 零 warning;产物 793,088 -> 794,112 B(+1,024,LTO 内联边界变化,
< 0.13%,属结构性拆分不可避免的噪声)。
This commit is contained in:
1 parent
7a3fefb9c2
commit
8437100586
5 files changed
+1587
-1524
No files matched your search
@@ -78,4 +78,28 @@ map 中 `cp-demangle.o` 已无 `.text` 段分配。
|
||||
|
||||
**验证**:release 与 debug 均全量重建,零 error 零 warning(`-O0` 下也没有新警告)。
|
||||
|
||||
### P7 面板状态/滚动量收敛为唯一派发点 —— ✅ 完成(提交 `7a3fefb`)
|
||||
|
||||
**问题(屎山核心之一)**:`Lane` 里 7 种实验性功能各有 1 份 `LanePanelState` + 1 个滚动偏移
|
||||
(14 个字段)。旧实现在**每一处**“按种类取用”的地方各写一遍嵌套三元式或 `switch`:
|
||||
`EdgePanelLayoutFor` 5 条 7 层嵌套三元式;标题栏拖拽、✕ 关闭、滚轮、滚动条、错开序数各写一遍。
|
||||
新增面板要改 20+ 处,漏一处就是「拖不动 / 关不掉 / 滚轮滚不到底」
|
||||
(`MARK`、`RESAMPLE`、`CLIP` 均真实踩过)。
|
||||
|
||||
**改动**:`PlotViewInternal.hpp` 新增唯一派发点
|
||||
`LanePanelEnabled` / `LanePanelStateOf` / `LanePanelScrollOf`(可写 + 只读)。
|
||||
这些 `switch` **穷举 7 种且不写 `default:`** ⇒ `-Wswitch` 在漏登记时编译报警
|
||||
(已用最小程序验证 `-Wswitch` 确实会报)。
|
||||
|
||||
调用点:布局 5 条三元式 → 3 行;标题栏拖拽 7 分支 switch → 1 次写入;
|
||||
滚轮/滚动条/✕ 关闭/折叠切换全部改为穷举无 `default`。
|
||||
|
||||
**验证**:release + debug 零 warning;产物 **793,088 B 不变**(等价变换,说明只是结构收敛)。
|
||||
|
||||
**未做(受验证条件限制)**:尚未把 `EdgePanelLayoutFor` 的 957 行分支整体改成
|
||||
“每面板一行元数据表”。原因:没有可用的离屏像素对比工具(`.preflight` 已删除,
|
||||
且崩溃会弹模态框),纯逻辑重写无法自证“像素完全一致”。已通过上面的派发收敛
|
||||
消除最容易出错的一类重复,剩余重复属于“几何算式本身”,风险高于收益。
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user