Files
StellarX-kaifa/开发记录/BUG/BUG-20260511-0011-跨root回调改脏未同轮提交导致Label延迟刷新.md
T
Codex 9155a86a8a 发布前托管重绘与布局封版收口
收口 Dialog/overlay 后鼠标状态同步、Tooltip 临时 coverage 与持久 coverage 拆分、跨 root 脏区补提交、TextBox/Button 绘制副作用修复,并补充 KEY6 回归用例和 BUG/Fix/Feature 开发记录。
2026-05-17 00:26:08 +08:00

1.8 KiB
Raw Blame History

BUG-20260511-0011

适用场景:记录问题本身,不展开完整修复方案。修复内容写入对应的 Fix 文档。

基本信息

  • ID: BUG-20260511-0011
  • 标题: 跨 root 回调改脏未同轮提交导致 Label 延迟刷新
  • 状态:已修复
  • 严重性:S3
  • 优先级:P1
  • 模块: Window / 托管重绘 / Label / TabControl
  • 版本 / 分支: 当前工作区
  • 环境: Windows / EasyX / KEY6
  • 发现人: 用户
  • 关联 Fix ID: Fix-BUG-20260511-0011

问题描述

  • 现象: KEY6 中点击 Right 页签内按钮后,A 区状态 Label 不立即刷新,需要下一次左键消息才显示。
  • 影响范围: 事件回调修改了另一个顶层 root 下的控件状态时,目标 root 可能不会进入本轮托管重绘队列。
  • 期望结果: 回调中改脏的跨 root 控件能在同一轮事件尾刷新。
  • 实际结果: 只有当前事件分发链所在 root 被提交,其他 root 的 dirty 子树滞留到下一次事件。

复现信息

  • 前置条件:[可选] 打开 KEY6,激活右侧页签第一页。
  • 复现步骤:
  1. 点击 Right 页签中的“页内按钮”。
  2. 观察 A 区状态 Label。
  3. 再点击空白处或其他控件。
  • 复现概率:必现
  • 最小复现 DemoKEY6
  • 证据:Label::setText() 只标脏目标 Label,不主动把其所属 shapePanel root 登记到 Window。

初步分析

  • 疑似位置: Window 事件尾托管重绘收口。
  • 触发条件: 当前事件 root 与被回调修改的目标 root 不同。
  • 相关线索: A 区 Label 在下一次左键消息后才刷新,说明 dirty 状态存在但未同轮提交。
  • 最近相关改动:[可选] 托管重绘统一收口。

跟踪信息

  • 首次发现时间: 2026-05-11
  • 最后更新时间: 2026-05-11
  • 修复版本: 当前工作区
  • 验证版本: KEY6 编译通过,待用户手测
  • 备注:[可选]