# BUG-20260409-0003

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

## 基本信息

- ID: BUG-20260409-0003
- 标题: 直接最大化触发收口保护，导致黑背景与控件残影
- 状态：已修复 / 待回归验证
- 严重性：S2
- 优先级：P0
- 模块：Window / Resize / Scene Redraw
- 版本 / 分支：`master`
- 环境：Windows 桌面 + EasyX + VS2022
- 发现人：用户反馈
- 关联 Fix ID：`Fix-BUG-20260409-0003`

## 问题描述

- 现象：
  - 某些用例在窗口初始大小下直接点击最大化后，新暴露出的区域显示为黑色背景。
  - 已有控件可能出现残留、残影或旧内容未被覆盖。
  - 若先手动拖动边框略微放大，再执行最大化，则问题消失。
- 影响范围：
  - 顶层窗口 resize 收口
  - 背景完整重绘
  - 控件 resize 后的快照/标脏收口
- 期望结果：
  - 无论是拖拽 resize 还是直接最大化，只要 `WM_SIZE` 进入收口流程，都应完成一次完整 redraw。
- 实际结果：
  - 某些“大跨度但合法”的最大化尺寸变化，会在收口中途被直接跳过，导致背景和控件未完成刷新。

## 复现信息

- 复现条件：
  - 初始窗口尺寸与最大化后的客户区尺寸跨度较大。
- 典型用例：
  1. `KEY == 1`：`1200x400 -> 2160x1417`
  2. `KEY == 2`：`700x510 -> 2160x1417`
  3. `KEY == 3 / 4`：初始尺寸较大时不复现
- 复现概率：高
- 证据：
  - `WM_SIZE：待处理=(2160x1417), isSizing=0`
  - `调整窗口尺寸开始：width=... height=...`
  - `尺寸调整被跨度保护跳过：old=(...) new=(...) diff=(...)`
  - 异常日志中缺失 `尺寸调整已完成`

## 初步分析

- 疑似位置：
  - [`Window.cpp`](D:/programming/imGUI-easyX/imGui-easyX/Window.cpp) 的 `runEventLoop()` resize 收口逻辑
- 可疑代码特征：
  - 使用 `abs(finalW - width) > 1000 || abs(finalH - height) > 1000` 作为跳过条件
  - 命中后直接：
    - `needResizeDirty = false`
    - `continue`
- 根因判断：
  - 该分支把“跨度较大的合法最大化”误判为异常帧
  - 导致后续 `Resize / adaptiveLayout / redrawScene / done log` 全部被跳过

## 跟踪信息

- 首次发现时间：2026-04-09
- 最后更新时间：2026-04-09
- 修复版本：当前工作区
- 验证版本：待用户回归
- 备注：
  - 当前证据表明问题与 DPI 不是同一级根因，更直接的是跨度阈值误杀。
