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

3.2 KiB
Raw Blame History

功能变更 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:[可选]
  • Commit: 5cb59b36525cde93de83313551296c6458694110
  • PR:[可选]
  • 发布版本:[可选] v3.0.0
  • 备注:[可选]
    • 资料来源:StellarX功能_模块变更.pdf 第 13-15 页,并以对应提交和历史 CHANGELOG.md 交叉核对。