Expose layout API and refresh regression docs

This commit is contained in:
Codex
2026-05-09 19:15:23 +08:00
parent 738cf035bb
commit 2388f22c99
21 changed files with 2491 additions and 367 deletions
@@ -0,0 +1,53 @@
# BUG-20260415-0007
> 适用场景:记录问题本身,不展开完整修复方案。修复内容写入对应的 Fix 文档。
## 基本信息
- ID: BUG-20260415-0007
- 标题: 实际绘制 coverage 低估导致 Tooltip 与 overlay 补画漏算
- 状态:已修复
- 严重性:S2
- 优先级:P1
- 模块: Tooltip / overlay 重组 / 托管 coverage
- 版本 / 分支: 当前工作区
- 环境: Windows / EasyX / KEY5 回归场景
- 发现人: 用户
- 关联 Fix IDFix-BUG-20260415-0007
## 问题描述
- 现象: C 米区容器内按钮 Tooltip 会画到 D 橙区上层;类似问题也可能出现在带附加绘制区域的其他控件上。
- 影响范围: Tooltip、页签按钮 Tooltip、内部按钮与浮层、overlay 补画依赖 coverage 的所有链路。
- 期望结果: overlay 补画应按“实际写到屏幕上的区域”判断,而不是只按控件本体 bounds。
- 实际结果: 按钮本体未与上层控件相交时,Tooltip 超出部分不会触发 overlay 补画,导致 Tooltip 压到不应被压住的上层控件之上。
## 复现信息
- 前置条件: 使用 KEY5,保证 C 米区按钮 Tooltip 会伸进 D 橙区。
- 复现步骤:
1. 打开 KEY5。
2. 将鼠标移到 C 米区容器内按钮上,触发 Tooltip。
3. 观察 Tooltip 与 D 橙区的遮挡关系。
- 复现概率:必现
- 最小复现 DemoKEY5 C / D 交界区
- 证据:Tooltip 可见区域超出按钮 bounds,但 overlay 补画未跟上
## 初步分析
- 疑似位置: Button Tooltip coverage、Window/Canvas/TabControl 的 coverage 计算链
- 触发条件: 控件本体 bounds 未与 overlay 相交,但附加绘制区域(例如 Tooltip)已伸入 overlay 区
- 相关线索:
- 之前的 coverage 默认等于 `getBoundsRect()`
- `Button` 的 Tooltip 由 `tipLabel` 额外绘制,不属于按钮本体矩形
- 最近相关改动:顶层 overlay 传递式补画机制已补齐,但 coverage 仍按本体矩形计算
## 跟踪信息
- 首次发现时间: 2026-04-15
- 最后更新时间: 2026-04-15
- 修复版本:当前工作区
- 验证版本:KEY5 编译级验证通过,待用户手测
- 备注:Tooltip 智能选位明确后置,本次只修根因链路