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,68 @@
# BUG-20260415-0008
> 适用场景:记录问题本身,不展开完整修复方案。修复内容写入对应的 Fix 文档。
## 基本信息
- ID: BUG-20260415-0008
- 标题: TabControl 页签层级与重复激活链路导致 Tooltip 和残影异常
- 状态:已修复
- 严重性:S2
- 优先级:P1
- 模块: TabControl / 页签绘制 / 外部激活页签
- 版本 / 分支: 当前工作区
- 环境: Windows / EasyX / KEY1 / KEY5
- 发现人: 用户
- 关联 Fix IDFix-BUG-20260415-0008
## 问题描述
- 现象:
- 有任意页签打开时,页签按钮 Tooltip 无法正常显示,只有全部页签关闭时正常。
- KEY1 中页签 1 的表格超出 TabControl 区域,外部按钮重复激活同一页签后,再切页或关闭页签会留下超出部分残影。
- 影响范围: TabControl 页签按钮 Tooltip、外部 `setActiveIndex()` 重复调用、页内超出页面边界绘制的控件。
- 期望结果:
- 页签按钮应始终位于页面之上,Tooltip 正常显示。
- 外部重复激活已激活页签不应破坏当前可见页面的快照链。
- 实际结果:
- 页签按钮 Tooltip 会被页面盖掉。
- 外部重复激活同一页签后,页内超出页面区域的 Table 在切页/关页时会残留。
## 复现信息
- 前置条件:
- KEY5:存在可见页面和页签按钮 Tooltip
- KEY1:页签 1 内的 Table 长于 TabControl 页面区域,存在外部按钮 `test`
- 复现步骤:
1. 在 KEY5 中打开任意页签,将鼠标移到页签按钮上触发 Tooltip。
2. 观察 Tooltip 是否被页面盖掉。
3. 在 KEY1 中点击一次 `test` 激活页签 1。
4. 再点击一次 `test`,然后切页或关闭页签 1。
- 复现概率:必现
- 最小复现 DemoKEY5 TabControl 区、KEY1 页签 1 + 外部 `test` 按钮
- 证据:Tooltip 被页面覆盖;重复激活后切页/关页出现残影
## 初步分析
- 疑似位置:
- `TabControl::draw()`
- `TabControl::requestRepaint()`
- `TabControl::setActiveIndex()`
- `Button::setButtonClick()`
- 触发条件:
- 页签按钮先画、页面后画
- `TOGGLE` 同状态重复 set 仍触发 onToggleOn
- 相关线索:
- 页面绘制层级高于页签按钮时,页签 Tooltip 会被后画的页面盖掉
- 重复激活已激活页签会重复执行页面 `onWindowResize()` / `setIsVisible(true)`
- 最近相关改动:TabControl overlay / Tooltip 回归专项修复
## 跟踪信息
- 首次发现时间: 2026-04-15
- 最后更新时间: 2026-04-15
- 修复版本:当前工作区
- 验证版本:KEY1 / KEY5 编译级验证通过,待用户手测
- 备注:本次只修页签层级和重复激活链路,不扩到 TabControl 其它内部布局语义