2.5 KiB
2.5 KiB
功能变更 ID: Feature-20260409-0003
适用场景:记录小到中等规模的功能、接口、行为、默认值或配置变化。 不适用场景:新增核心模块、重大模块重构、架构级设计,请使用“新增功能模块”模板。
基本信息
- ID: Feature-20260409-0003
- 标题: 输入事件、hover 与遮挡交互调整
- 状态:已完成
- 类型:修改
- 级别:L2 中等
- 模块:Window / Canvas / Button / TextBox / Dialog / TabControl
- 版本 / 分支:
master - 环境:Windows + EasyX + VS2022
- 负责人:Codex 协作修改
变更背景
- 背景:
- 初始版本中,hover、点击、遮挡与重叠控件之间的事件传递不够稳定。
- 目标:
- 建立更一致的鼠标事件消费规则,减少穿透、残留 hover 和无意义重绘。
- 不做什么:[可选]
- 暂不彻底解决“快速划过多按钮偶发一帧双高亮”的底层限制问题。
变更内容
- 变更摘要:
- 收紧
Button / TextBox / Dialog的事件消费语义,并补上对话框关闭后及遮挡场景下的 hover 清理。
- 收紧
- 新增项:[可选]
Window::dispatchSyntheticMouseMoveToControls(...)
- 修改项:[可选]
Button只在合理命中路径上吞掉鼠标事件TextBox纯 hover 不再处理- 非模态对话框覆盖区域内阻断底层穿透
- 对话框关闭后补发合成鼠标移动同步 hover
- 删除 / 废弃项:[可选]
- 大量 hover DEBUG 日志已降噪
- 受影响的文件 / 类 / 函数:
Window.cppCanvas.cppButton.cppTextBox.cppDialog.cppTabControl.cpp
- 对外 API / 属性变化:[可选]
- 无新增公开 API,主要是行为语义变化
行为对照
- 变更前:
- 遮挡区域 hover/click 可能穿透;对话框关闭后底层 hover 可能残留。
- 变更后:
- 交互更偏向“命中即消费,关闭后同步清理 hover,遮挡区域不透传”。
- 兼容性说明:部分兼容
- 迁移说明:[可选]
- 若旧代码依赖非模态对话框下方控件还能收到事件,这种行为已被收紧
验证与落地
- 验证方式:
KEY == 2 / 3 / 4中对按钮、Tab、Table 分页、对话框关闭链做回归
- 验证结果:
- 主要交互一致性问题已收敛
- 关联 BUG / Fix:[可选]
BUG-20260409-0001Fix-BUG-20260409-0001
- Commit:
7f8431ab07a4ec- 当前工作区未提交阶段
- PR:[可选]
- 发布版本:[可选]
- 备注:[可选]