54 lines
1.9 KiB
Markdown
54 lines
1.9 KiB
Markdown
# BUG-20260203-0001
|
||
|
||
> 适用场景:记录问题本身,不展开完整修复方案。修复内容写入对应的 Fix 文档。
|
||
|
||
## 基本信息
|
||
|
||
- ID: BUG-20260203-0001
|
||
- 标题: 对话框打开时错误下发合成 WM_MOUSEMOVE
|
||
- 状态:已修复
|
||
- 严重性:S3
|
||
- 优先级:P2
|
||
- 模块: Window
|
||
- 版本 / 分支: v3.0.0
|
||
- 环境: Windows 10/11 x64 + Visual Studio 2022(MSVC)Debug / Release
|
||
- 发现人: 用户
|
||
- 关联 Fix ID: Fix-BUG-20260203-0001
|
||
|
||
## 问题描述
|
||
|
||
- 现象: 对话框打开时会触发本应只在对话框关闭时执行的合成 `WM_MOUSEMOVE`,并下发给所有可见控件以刷新 hover 状态。
|
||
- 影响范围: 对话框打开路径产生额外事件下发,带来性能影响和不必要的 hover 状态刷新。
|
||
- 期望结果: 合成 `WM_MOUSEMOVE` 只在对话框被关闭后下发一次。
|
||
- 实际结果: 对话框打开和关闭时都会下发合成 `WM_MOUSEMOVE`。
|
||
|
||
## 复现信息
|
||
|
||
- 前置条件:[可选] 存在可弹出的对话框。
|
||
- 复现步骤:
|
||
|
||
1. 启动事件循环。
|
||
2. 触发对话框弹出。
|
||
3. 观察日志中是否在对话框打开阶段出现合成 `WM_MOUSEMOVE` 下发记录。
|
||
|
||
- 复现概率:必现
|
||
- 最小复现 Demo:[可选] 弹出一个对话框即可。
|
||
- 证据:PDF 日志显示对话框弹出后出现“对话框关闭,合成WM_MOUSEMOVE已下发”。
|
||
|
||
## 初步分析
|
||
|
||
- 疑似位置: `Window::runEventLoop()`
|
||
- 触发条件: 对话框打开路径触发重绘判断时,也执行了对话框关闭后才需要的鼠标移动合成逻辑。
|
||
- 相关线索:
|
||
- 相关变量为 `dialogClose`。
|
||
- 合成 `WM_MOUSEMOVE` 的执行缺少对 `dialogClose` 为真的限定。
|
||
- 最近相关改动:[可选]
|
||
|
||
## 跟踪信息
|
||
|
||
- 首次发现时间: 2026-02-03
|
||
- 最后更新时间: 2026-09-19(从 PDF 整理入库)
|
||
- 修复版本: v3.0.1
|
||
- 验证版本:[可选] v3.0.1
|
||
- 备注:[可选] 来源原始 ID 为 `BUG-20260203`;PDF 未包含 `-XXXX` 后缀,入库时补充序号。
|