Files
StellarX-kaifa/开发记录/BUG/BUG-20260203-0001-对话框打开时错误下发合成WM_MOUSEMOVE.md

54 lines
1.9 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-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` 后缀,入库时补充序号。