7a3fefb9c2408ea01aa6b1b64e25c5737c7cdd83
问题:`Lane` 里 7 种实验性功能各自持有一份 `LanePanelState` 与滚动偏移(共 14 个字段)。 旧实现在每个需要“按种类取用”的地方各写一遍多层嵌套三元式或 switch: - EdgePanelLayoutFor 的 enabled / open / collapsed / storedX / storedY 共 5 条 7 层嵌套三元式(历史上多次因多/少一个右括号编译失败); - 标题栏拖拽、✕ 关闭、滚轮翻页、滚动条拖动、错开序数统计各自再写一遍。 新增一种面板要改 20+ 处,漏一处就是「面板拖不动 / 关不掉 / 滚轮滚不到底」 (MARK、RESAMPLE、CLIP 三种面板都真实踩过)。 改法(PlotViewInternal.hpp 新增唯一派发点): - LanePanelEnabled(lane, kind) - LanePanelStateOf(lane, kind) 可写/只读 - LanePanelScrollOf(lane, kind) 可写/只读 这些 switch **穷举全部 7 种且不写 default**,因此 -Wswitch(属 -Wall)会在新增 EdgePanelKind 而漏登记时直接报警 —— 已用最小程序验证 -Wswitch 确实会报。 调用点改造: - EdgePanelLayoutFor:5 条嵌套三元式 -> 3 行访问器调用;局部 kOrder[] -> kEdgePanelKinds。 - 标题栏拖拽:整个 7 分支 switch -> 一次访问器写入。 - 滚轮翻页:current 的三元式链 -> LanePanelScrollOf;switch 补全 MEAN/MARK 并去掉 default。 - 滚动条拖动:switch 补全 MEAN/MARK 并去掉 default。 - ✕ 关闭:去掉 `case COUNT: default:` 的兜底,改为穷举。 - SetLanePanelCollapsed / LanePanelCollapsed:两个 switch -> 一次访问器。 - 滚轮“是否可滚面板”的 kind 列举改为 `hoveredKind != MARK`。 验证:release / debug 全量编译零 warning;产物大小不变(793,088 B,逻辑等价)。
Languages
C++
99.5%
Makefile
0.5%