9155a86a8a
收口 Dialog/overlay 后鼠标状态同步、Tooltip 临时 coverage 与持久 coverage 拆分、跨 root 脏区补提交、TextBox/Button 绘制副作用修复,并补充 KEY6 回归用例和 BUG/Fix/Feature 开发记录。
53 lines
2.2 KiB
Markdown
53 lines
2.2 KiB
Markdown
# BUG-20260511-0010
|
||
|
||
> 适用场景:记录问题本身,不展开完整修复方案。修复内容写入对应的 Fix 文档。
|
||
|
||
## 基本信息
|
||
|
||
- ID: BUG-20260511-0010
|
||
- 标题: 局部提交内部 coverage 扩张未反馈导致 Dialog 漏补
|
||
- 状态:已修复
|
||
- 严重性:S2
|
||
- 优先级:P1
|
||
- 模块: Window / Canvas / Dialog / 托管重绘
|
||
- 版本 / 分支: 当前工作区
|
||
- 环境: Windows / EasyX / KEY6
|
||
- 发现人: 用户
|
||
- 关联 Fix ID: Fix-BUG-20260511-0010
|
||
|
||
## 问题描述
|
||
|
||
- 现象: KEY6 中非模态 Dialog 打开后,触发旁边按钮 Tooltip,某些位置会导致下层按钮重绘覆盖 Dialog。
|
||
- 影响范围: 可局部提交的 root 在内部补画兄弟控件后,如果实际写屏范围扩大,Window 可能仍按初始 coverage 判断上层 overlay。
|
||
- 期望结果: 下层 root 内部扩张后的实际写屏区域能触发上层 Dialog 补画。
|
||
- 实际结果: Window 使用初始 coverage,导致 Dialog overlay 补画漏判。
|
||
|
||
## 复现信息
|
||
|
||
- 前置条件:[可选] 打开 KEY6,触发非模态 `AbortRetryIgnore` 对话框。
|
||
- 复现步骤:
|
||
|
||
1. 最大化窗口。
|
||
2. 打开 KEY6 非模态 `AbortRetryIgnore` 对话框。
|
||
3. 在 `RetryCancel` 按钮特定区域触发 Tooltip。
|
||
4. 观察非模态 Dialog 是否被下层按钮局部重绘覆盖。
|
||
|
||
- 复现概率:高概率
|
||
- 最小复现 Demo:KEY6
|
||
- 证据:临时 `OverlayTemp` 日志显示 Canvas 内部 coverage 从 `(250,512,490,583)` 扩张到 `(250,512,700,583)`,但 Window 仍用旧 working coverage 判断 Dialog,相交结果为 `hit=0`。
|
||
|
||
## 初步分析
|
||
|
||
- 疑似位置: `Window::flushManagedRepaint()` 与 `Canvas::requestRepaint(this)` 的 coverage 交接。
|
||
- 触发条件: root 支持局部提交,内部补画后序兄弟导致实际 coverage 扩张。
|
||
- 相关线索: Dialog 区域与内部最终 coverage 相交,但与 Window 初始 working coverage 不相交。
|
||
- 最近相关改动:[可选] 托管局部重绘与 overlay 补画收口。
|
||
|
||
## 跟踪信息
|
||
|
||
- 首次发现时间: 2026-05-11
|
||
- 最后更新时间: 2026-05-11
|
||
- 修复版本: 当前工作区
|
||
- 验证版本: KEY6 编译通过,待用户手测
|
||
- 备注:[可选] 精确 actual coverage 回传作为下版本优化项。
|