Files
StellarX-kaifa/开发记录/BUG/BUG-20260206-0001-对话框打开时持续触发全量重绘.md

54 lines
1.9 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-20260206-0001
> 适用场景:记录问题本身,不展开完整修复方案。修复内容写入对应的 Fix 文档。
## 基本信息
- ID: BUG-20260206-0001
- 标题: 对话框打开时持续触发全量重绘
- 状态:已修复
- 严重性:S3
- 优先级:P2
- 模块: Window
- 版本 / 分支: v3.0.0 / master
- 环境: Windows 10/11 x64 + Visual Studio 2022(MSVC)Debug / Release
- 发现人: 用户
- 关联 Fix ID: Fix-BUG-20260206-0001
## 问题描述
- 现象: 对话框保持打开时持续触发全量重绘,重复重绘所有打开的对话框和可见控件。
- 影响范围: 对话框打开期间产生不必要的全量绘制,造成性能影响。
- 期望结果: 只在对话框打开或关闭时触发必要重绘,确保对话框顶层显示并清除关闭残留。
- 实际结果: 重绘前以“是否有对话框可见或关闭”为依据,导致对话框保持可见时持续触发重绘。
## 复现信息
- 前置条件:[可选] 存在可弹出的对话框。
- 复现步骤:
1. 触发对话框弹出。
2. 保持对话框打开。
3. 观察日志中是否持续输出全量重绘相关记录。
- 复现概率:必现
- 最小复现 Demo:触发任意对话框即可。
- 证据:PDF 日志中同一时间片持续出现“对话框打开/关闭,触发全量重绘”。
## 初步分析
- 疑似位置: `Window::runEventLoop()`
- 触发条件: 对话框处于可见状态且事件循环持续运行。
- 相关线索:
- 相关变量为 `needredraw`。
- 重绘判断基于“是否存在可见对话框”,而不是“是否刚刚打开 / 关闭对话框”。
- 最近相关改动:[可选]
## 跟踪信息
- 首次发现时间: 2026-02-06
- 最后更新时间: 2026-09-19(从 PDF 整理入库)
- 修复版本: v3.0.1
- 验证版本:[可选] v3.0.1
- 备注:[可选] 来源原始 ID 为 `BUG-20260206`;PDF 未包含 `-XXXX` 后缀,入库时补充序号。