Files
StellarX-kaifa/开发记录/BUG/BUG-20260415-0007-实际绘制coverage低估导致Tooltip与overlay补画漏算.md

2.2 KiB
Raw Permalink Blame History

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 智能选位明确后置,本次只修根因链路