Files
StellarX-kaifa/开发记录/BUG/BUG-20260415-0006-托管局部重绘未正确提交脏子树导致嵌套Canvas按钮状态不刷新.md

54 lines
2.1 KiB
Markdown
Raw Permalink 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.
# BUG-20260415-0006
> 适用场景:记录问题本身,不展开完整修复方案。修复内容写入对应的 Fix 文档。
## 基本信息
- ID: BUG-20260415-0006
- 标题: 托管局部重绘未正确提交脏子树导致嵌套 Canvas 按钮状态不刷新
- 状态:已修复
- 严重性:S2
- 优先级:P1
- 模块: 重绘 / 托管局部提交 / Canvas 嵌套
- 版本 / 分支: 当前工作区
- 环境: Windows / EasyX / KEY5 回归场景
- 发现人: 用户
- 关联 Fix IDFix-BUG-20260415-0006
## 问题描述
- 现象: KEY5 中第二层、第三层 Canvas 内按钮可正常触发 hover / click 回调,但视觉状态不刷新。
- 影响范围: 嵌套 Canvas 内的深层按钮、页内嵌套容器按钮、所有依赖托管局部重绘的脏后代场景。
- 期望结果: 只要深层按钮状态变化,最外层托管 root 应能正确提交对应脏子树并把视觉结果画出来。
- 实际结果: 日志显示事件和回调已执行,但屏幕上不出现 hover / press / release 反馈,直到触发更大范围重绘才会补出来。
## 复现信息
- 前置条件: 使用 KEY5 场景,启用三层 Canvas 嵌套回归区。
- 复现步骤:
1. 打开 KEY5。
2. 将鼠标移到第二层或第三层 Canvas 内的按钮上,观察 hover。
3. 点击按钮并观察按下、松开状态。
- 复现概率:必现
- 最小复现 DemoKEY5 A 区三层 Canvas 嵌套
- 证据:日志显示按钮回调已执行,但按钮视觉状态不刷新
## 初步分析
- 疑似位置: Canvas 托管局部重绘提交链、Window 托管重绘登记 coverage
- 触发条件: root 的直接子控件本身不 dirty,但其下存在 dirty descendant
- 相关线索:
- 托管局部提交只认直接 dirty child
- 深层按钮状态变化未提升到 root 下直接脏分支
- 最近相关改动:第二阶段布局与托管重绘收口
## 跟踪信息
- 首次发现时间: 2026-04-15
- 最后更新时间: 2026-04-15
- 修复版本:当前工作区
- 验证版本:KEY5 编译级验证通过,待用户手测
- 备注:该问题已按机制修复,不再使用临时整容器重绘补丁