Fix maximize resize guard and add records

This commit is contained in:
Codex
2026-04-09 04:19:56 +08:00
parent f567369300
commit 97710db9e3
5 changed files with 297 additions and 6 deletions
@@ -0,0 +1,55 @@
# 补充记录-20260409-窗口最大化收口保护
## 说明
- 本文件用于补充记录 2026-04-09 当天新增的窗口最大化收口问题。
- 对应修改发生在 `f567369` 快照之后,当前仍位于工作区未提交状态。
## 问题概述
- 现象:
- 某些窗口初始尺寸下,直接点击最大化会出现黑背景、控件残影。
- 若先手动拖拽窗口略微放大,再最大化,则问题消失。
- 影响用例:
- `KEY == 1`
- `KEY == 2`
- 不受影响用例:
- `KEY == 3`
- `KEY == 4`
## 根因
- [`Window.cpp`](D:/programming/imGUI-easyX/imGui-easyX/Window.cpp) 的 `runEventLoop()` resize 收口中存在一段历史“跨度保护”。
- 该保护把“宽高变化超过 1000”视为异常帧,直接终止收口:
- 不再执行 `adaptiveLayout`
- 不再执行 `Resize`
- 不再执行 `redrawScene(true, true)`
- 因此新暴露区域不会被完整刷新,最终表现为黑背景与残影。
## 本次新增记录
- BUG
- [`BUG-20260409-0003 直接最大化触发收口保护导致黑背景与残影`](./BUG/BUG-20260409-0003-直接最大化触发收口保护导致黑背景与残影.md)
- Fix
- [`Fix-BUG-20260409-0003 直接最大化触发收口保护导致黑背景与残影`](./Fix/Fix-BUG-20260409-0003-直接最大化触发收口保护导致黑背景与残影.md)
- 功能变更:
- [`Feature-20260409-0006 窗口最大化收口保护调整`](./功能变更/Feature-20260409-0006-窗口最大化收口保护调整.md)
## 修改摘要
- 将“跨度过大即跳过”改为“仅非法尺寸才跳过”。
- 非法尺寸标准:
- `actualWidth <= 0`
- `actualHeight <= 0`
- `actualWidth > max(10000, virtualScreenWidth * 2)`
- `actualHeight > max(10000, virtualScreenHeight * 2)`
- 对“大跨度但合法”的 resize 保留 `DEBUG` 日志,但继续执行完整收口。
- 顺手删除了 `Window.cpp` 中未使用的 `ExMessage mm;` 遗留变量。
## 当前状态
- 代码修改:已完成,待提交
- 文档记录:已补充
- 验证状态:
- 已完成源码级编译验证
- 待用户做 GUI 回归