完成 StellarX 核心重构、缺陷修复与测试收口

This commit is contained in:
Codex
2026-09-30 01:23:18 +08:00
parent 9155a86a8a
commit 568ffc40eb
85 changed files with 5011 additions and 645 deletions
@@ -0,0 +1,58 @@
# Fix-BUG-20260122-0001
> 适用场景:记录某个 BUG 的修复方案、影响评估、验证结果与落地信息。
## 关联信息
- Fix ID: Fix-BUG-20260122-0001
- 关联 BUG ID: BUG-20260122-0001
- 修复目标: 将 `Window::runEventLoop()` 中普通控件事件分发顺序由正序遍历改为逆序遍历,以保持 Z 序直觉。
- 状态:已完成
- 负责人: 未记录
- 分支 / 版本: master / v3.0.1
## 根因分析
- 根因: 之前版本修改 `Window::runEventLoop()` 时,将原本的逆序事件分发错误改成了正序遍历。
- 触发条件: 普通控件重叠时,事件落在多个控件的命中区域。
- 为什么之前没发现:[可选] 测试缺失,提交时未进行详细代码审查。
- 关键证据:[可选] PDF 历史记录说明该问题属于代码审查发现的遍历顺序错误。
## 修复方案
- 修复思路: 对 `controls` 使用逆序遍历,让绘制顺序更靠上的控件优先处理事件。
- 关键改动:
- 将 `for (auto& c : controls)` 调整为 `for (auto it = controls.rbegin(); it != controls.rend(); ++it)`。
- 涉及文件 / 类 / 函数:
- `Window.cpp`
- `Window::runEventLoop()`
- 影响的 API / 行为:[可选] 无对外 API 变化;重叠控件事件命中顺序修正。
- 关键约束 / 不变量:[可选] 普通控件事件分发应保持逆序遍历,避免下层控件抢事件。
- 回滚点 / 开关:[可选] 回退普通控件事件遍历顺序。
## 影响评估
- 影响范围: 普通控件点击、悬停、重叠控件事件命中。
- 兼容性影响:无(内部逻辑修改)
- 行为变化:有(重叠控件由上层优先处理事件)
- 性能影响:无明显影响。
- 回归风险: 控件重叠时的事件分发行为变化,需要确认符合绘制 Z 序。
## 验证结果
- 验证步骤:
1. 创建重叠普通控件。
2. 在重叠区域触发点击与悬停。
3. 确认上层控件优先收到事件。
- 验证结果: PDF 历史记录标记已修复;原记录未提供详细验证证据。
- 回归检查:[可选] 普通控件事件分发、重叠按钮点击、悬停状态变化。
- 验证证据:[可选] 无
## 落地信息
- Commit: b765e54eff28ebcd0bd99a81dec80b3ac0769337
- PR:[可选] git 推送
- 发布版本: v3.0.1
- 备注: PDF 原文合入分支写作 `mster`,本次按仓库语境整理为 `master`。