Files
StellarX-kaifa/开发记录/BUG/BUG-20260122-0001-Window-runEventLoop普通控件事件分发顺序.md

54 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BUG-20260122-0001
> 适用场景:记录问题本身,不展开完整修复方案。修复内容写入对应的 Fix 文档。
## 基本信息
- ID: BUG-20260122-0001
- 标题: Window::runEventLoop 普通控件事件分发顺序
- 状态:已修复
- 严重性:S3
- 优先级:P2
- 模块: Window
- 版本 / 分支: v3.0.0
- 环境: Windows 10/11 x64 + Visual Studio 2022(MSVC)Debug / Release
- 发现人: 用户
- 关联 Fix ID: Fix-BUG-20260122-0001
## 问题描述
- 现象: `Window::runEventLoop()` 对普通控件分发事件时采用正序遍历 `controls`,控件重叠时下层控件可能抢走点击 / 悬停事件,导致行为与绘制顺序不一致。
- 影响范围: 普通控件存在重叠时,事件命中顺序可能不符合 Z 序直觉。
- 期望结果: 上层控件优先接收事件,下层控件不应抢走事件。
- 实际结果: 正序遍历导致下层控件可能先处理事件。
## 复现信息
- 前置条件:[可选] Window 中存在相互重叠的普通控件。
- 复现步骤:
1. 创建存在重叠区域的普通控件。
2. 在重叠区域触发点击或悬停事件。
3. 观察是否由下层控件优先处理事件。
- 复现概率:必现(按 PDF 记录;实际复现未提供)
- 最小复现 Demo:[可选] 无
- 证据:PDF 历史记录指出该问题来自之前版本误将逆序分发改为正序分发。
## 初步分析
- 疑似位置: `Window::runEventLoop()`
- 触发条件: 普通控件重叠,且事件落在重叠区域。
- 相关线索:
- 普通控件绘制顺序与事件分发顺序应保持 Z 序一致。
- `Window::controls` 正序遍历会让较早加入的下层控件先处理事件。
- 最近相关改动:[可选] 某个版本中普通控件遍历顺序被错误修改。
## 跟踪信息
- 首次发现时间: 2026-01-22
- 最后更新时间: 2026-09-19(从 PDF 整理入库)
- 修复版本: v3.0.1
- 验证版本:[可选] v3.0.1
- 备注:[可选] 来源原始 ID 为 `BUG-20260122`;PDF 未包含 `-XXXX` 后缀,入库时补充序号。