Files
StellarX-kaifa/开发记录/功能变更/Feature-20260109-0001-TabControl页签切换时序调整.md
T

68 lines
3.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.
# 功能变更 ID: Feature-20260109-0001
> 适用场景:记录小到中等规模的功能、接口、行为、默认值或配置变化。
> 不适用场景:新增核心模块、重大模块重构、架构级设计,请使用“新增功能模块”模板。
## 基本信息
- ID: Feature-20260109-0001
- 标题: TabControl 页签切换时序调整
- 状态:已完成(历史记录;本次仅归档,未重新验证)
- 类型:修改
- 级别:L2 中等
- 模块: TabControl
- 版本 / 分支: v3.0.0 / master
- 环境: Windows 11 / Visual Studio 2022 / Debug、Release / EasyX
- 负责人: Ysm-04(历史实现)
## 变更背景
- 背景: 原页签切换回调先显示目标页,再关闭其他页,在复杂容器和背景快照链路中可能短暂形成多页同时可见的状态。
- 目标: 将切换顺序收敛为先停用原页,再激活目标页,降低重绘和快照时序的不确定性。
- 不做什么:[可选]
- 不改变 TabControl 的公共调用接口。
- 不改变页签按钮与页面 Canvas 的配对模型。
## 变更内容
- 变更摘要: 调整 `TabControl::add()` 注册的 Toggle 回调执行顺序。
- 新增项:[可选]
- 激活日志记录原页索引、目标页索引和页签文本。
- 修改项:[可选]
- 激活目标页前,先找到当前可见页面并停用其他已点击页签。
- 其他页签的 ToggleOff 回调负责隐藏对应页面。
- 旧页停用后,再更新目标页布局、显示目标页并标记 TabControl 为脏。
- 删除 / 废弃项:[可选]
- 无。
- 受影响的文件 / 类 / 函数:
- 历史路径:`src/TabControl.cpp`
- `TabControl::add()` 内的 ToggleOn / ToggleOff 回调
- 对外 API / 属性变化:[可选]
- 无,属于内部切换时序调整。
## 行为对照
- 变更前: 先显示目标页面,再遍历关闭其他页签和页面。
- 变更后: 先通过其他页签的关闭回调隐藏旧页面,再显示并激活目标页面。
- 兼容性说明:兼容
- 迁移说明:[可选]
- 调用方无需改动;若业务代码依赖切换过程中两个页面短暂同时可见的副作用,应移除该依赖。
## 验证与落地
- 验证方式:
- 分别创建包含 3 个和 5 个页签的 TabControl,连续点击不同页签。
- 检查日志顺序,确认旧页先关闭、目标页后激活。
- 重复触发同一页签,观察激活和关闭行为。
- 验证结果:
- PDF 历史记录将 3 页签、5 页签和同页签重复触发场景记为正常。
- 本次归档未重新构建 v3.0.0,也未运行 GUI 回归,因此不将历史手工观察视为当前版本验证结果。
- 关联 BUG / Fix:[可选]
- 与页签切换后的绘制一致性相关:[`BUG-20260109-0002-TabControl切换后Table新旧内容重叠.md`](../BUG/BUG-20260109-0002-TabControl切换后Table新旧内容重叠.md)
- 后续修复记录:[`Fix-BUG-20260109-0002-TabControl切换后Table新旧内容重叠.md`](../Fix/Fix-BUG-20260109-0002-TabControl切换后Table新旧内容重叠.md)
- Commit: `5cb59b36525cde93de83313551296c6458694110`
- PR:[可选]
- 发布版本:[可选] v3.0.0
- 备注:[可选]
- 资料来源:`StellarX功能_模块变更.pdf` 第 13-15 页,并以对应提交和历史 `CHANGELOG.md` 交叉核对。