Files
StellarX-kaifa/开发记录/BUG/BUG-20260511-0010-局部提交内部coverage扩张未反馈导致Dialog漏补.md
T
Codex 9155a86a8a 发布前托管重绘与布局封版收口
收口 Dialog/overlay 后鼠标状态同步、Tooltip 临时 coverage 与持久 coverage 拆分、跨 root 脏区补提交、TextBox/Button 绘制副作用修复,并补充 KEY6 回归用例和 BUG/Fix/Feature 开发记录。
2026-05-17 00:26:08 +08:00

53 lines
2.2 KiB
Markdown
Raw 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-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 是否被下层按钮局部重绘覆盖。
- 复现概率:高概率
- 最小复现 DemoKEY6
- 证据:临时 `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 回传作为下版本优化项。