Files
StellarX-kaifa/开发记录/BUG/BUG-20260511-0012-Tooltip临时浮层污染或擦除兄弟控件快照.md
T
Codex 9155a86a8a 发布前托管重绘与布局封版收口
收口 Dialog/overlay 后鼠标状态同步、Tooltip 临时 coverage 与持久 coverage 拆分、跨 root 脏区补提交、TextBox/Button 绘制副作用修复,并补充 KEY6 回归用例和 BUG/Fix/Feature 开发记录。
2026-05-17 00:26:08 +08:00

55 lines
2.3 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-0012
> 适用场景:记录问题本身,不展开完整修复方案。修复内容写入对应的 Fix 文档。
## 基本信息
- ID: BUG-20260511-0012
- 标题: Tooltip 临时浮层污染或擦除兄弟控件快照
- 状态:已修复
- 严重性:S2
- 优先级:P1
- 模块: Tooltip / Canvas / TabControl / 托管重绘 / 背景快照
- 版本 / 分支: 当前工作区
- 环境: Windows / EasyX / KEY6
- 发现人: 用户
- 关联 Fix ID: Fix-BUG-20260511-0012
## 问题描述
- 现象: KEY6 A 区禁用按钮触发 Tooltip 后,如果 Tooltip 位于状态 Label 下方,状态 Label 可能捕获 Tooltip 到背景快照,或用透明 Label 的旧快照擦掉 Tooltip 一部分。
- 影响范围: 同一容器内,绘制顺序在 Tooltip 触发控件之后、且与 Tooltip coverage 相交的兄弟控件。
- 期望结果: Tooltip 作为临时浮层显示,不应污染兄弟控件背景快照,也不应被透明 Label 的旧快照擦除。
- 实际结果: 旧逻辑把 Tooltip coverage 与持久绘制 coverage 混用,导致兄弟控件作废快照并重抓,或保留快照重画时擦掉 Tooltip。
## 复现信息
- 前置条件:[可选] 打开 KEY6。
- 复现步骤:
1. 将鼠标移到 A 区禁用按钮上触发 Tooltip。
2. 让 Tooltip 显示区域位于状态 Label 下方。
3. 观察状态 Label 区域是否覆盖 / 擦除 Tooltip。
4. 触发下一次重绘后观察是否有 Tooltip 残留。
- 复现概率:高概率
- 最小复现 Demo:KEY6 A 区
- 证据:`Label::draw()` 即使透明也会先 `restBackground()`;如果被临时浮层触发补画,会回贴旧快照。
## 初步分析
- 疑似位置: `Canvas::requestRepaint(this)` / `TabControl::requestRepaint(this)` 的局部 overlay 补画策略。
- 触发条件: 下层 Button Tooltip 的完整 coverage 与后序兄弟控件相交。
- 相关线索:
- `Button::getManagedRepaintCoverageRect()` 包含 Tooltip。
- Canvas 旧逻辑用同一 coverage 同时决定“是否补画兄弟”和“是否刷新兄弟背景快照”。
- 最近相关改动:[可选] Tooltip coverage 纳入托管重绘链。
## 跟踪信息
- 首次发现时间: 2026-05-11
- 最后更新时间: 2026-05-11
- 修复版本: 当前工作区
- 验证版本: KEY1 ~ KEY6 编译通过,待用户手测
- 备注:[可选]