Files
StellarX-kaifa/开发记录/01-补充记录-20260409-窗口最大化收口保护.md
2026-04-09 04:19:56 +08:00

2.1 KiB
Raw Permalink Blame History

补充记录-20260409-窗口最大化收口保护

说明

  • 本文件用于补充记录 2026-04-09 当天新增的窗口最大化收口问题。
  • 对应修改发生在 f567369 快照之后,当前仍位于工作区未提交状态。

问题概述

  • 现象:
    • 某些窗口初始尺寸下,直接点击最大化会出现黑背景、控件残影。
    • 若先手动拖拽窗口略微放大,再最大化,则问题消失。
  • 影响用例:
    • KEY == 1
    • KEY == 2
  • 不受影响用例:
    • KEY == 3
    • KEY == 4

根因

  • Window.cpprunEventLoop() resize 收口中存在一段历史“跨度保护”。
  • 该保护把“宽高变化超过 1000”视为异常帧,直接终止收口:
    • 不再执行 adaptiveLayout
    • 不再执行 Resize
    • 不再执行 redrawScene(true, true)
  • 因此新暴露区域不会被完整刷新,最终表现为黑背景与残影。

本次新增记录

修改摘要

  • 将“跨度过大即跳过”改为“仅非法尺寸才跳过”。
  • 非法尺寸标准:
    • actualWidth <= 0
    • actualHeight <= 0
    • actualWidth > max(10000, virtualScreenWidth * 2)
    • actualHeight > max(10000, virtualScreenHeight * 2)
  • 对“大跨度但合法”的 resize 保留 DEBUG 日志,但继续执行完整收口。
  • 顺手删除了 Window.cpp 中未使用的 ExMessage mm; 遗留变量。

当前状态

  • 代码修改:已完成,待提交
  • 文档记录:已补充
  • 验证状态:
    • 已完成源码级编译验证
    • 待用户做 GUI 回归