Skip to content

fix(vgui): correct native build editor DPI layout - #32

Merged
hzqst merged 1 commit into
mainfrom
fix/buildmode-editor-dpi
Oct 25, 2026
Merged

hzqst merged 1 commit into
mainfrom
fix/buildmode-editor-dpi

Conversation

@hzqst

@hzqst hzqst commented Oct 25, 2026

Copy link
Copy Markdown
Contributor

Fixes MetaHookSv/MetaHookSv#954

GameUI 的原生 BuildModeDialog 在高分辨率下仍使用固定窗口尺寸和间距,与已经缩放的字体、标题栏和滚动条不一致;属性列表还存在横向溢出及滚动条被禁用的问题。

本次按已讨论的方案修复原生对象:

  • 通过 gamedata 定位构造函数、编辑器及 PanelListPanel 虚函数和成员偏移,在原始布局后修正控件边界;列表修正仅作用于原生编辑器的子列表。
  • 按比例计算默认窗口尺寸、间距和属性行尺寸,保留用户保存的像素尺寸、位置及原生资源保存坐标。动态切换选中控件后立即更新属性列表,保留原生滚动范围计算并修正滚动条和内容边界。
  • 保留原生对象与字体,避免跨 SDK 私有类 ABI,也无需 TLS 或共享 Frame hook。安装失败时回滚 hook。
  • 同步消费清单、中英文 gamedata 文档和几何回归测试。所需符号已由 GoldSrc_VibeSignatures v20261025b 发布,覆盖 12 个 Windows GameUI 身份;上游跟踪为 #407。

验证:

  • MSVC x86 Release 构建通过;9/9 CTest、11/11 Python 测试通过;固定版本 clang-format 检查 70 个文件无差异;暂存 diff 检查通过。
  • 按更新后的 manifest 在线同步并校验 23 个 gamedata 快照通过。
  • czero / engine 10210 实机验证 1280×720、1920×1080、2560×1440;编辑器默认尺寸分别为 300×400、450×600、600×800,属性行与滚动条无横向溢出或裁切。
  • 实机验证拖动、调整窗口尺寸、退出重开保留尺寸和位置、切换控件重建属性列表、滚动到最后一行,以及拖动游戏控件后保存并重新加载资源。144×48 像素控件保存为 72×24 资源单位,未重复缩放。
  • 游戏原有文件已恢复并校验。完整实机矩阵之后仅做了常量命名及删除一次重复行尺寸更新的整理,随后重新通过构建和自动化检查。

验证范围:实机激活使用原生 Options BuildGroup,实体 Shift+Ctrl+Alt+B 路径尚未验证。请求 3840×2160 被桌面限制为 3440×1440,未获得真正 4K 证据。该引擎现有逻辑强制启用 DPI 支持,因此 -no_high_dpi 未覆盖实际关闭 DPI 的路径;其他引擎版本及自定义 scheme 仅确认 gamedata 覆盖。

Scale the native GameUI build editor and its property rows using resolved
gamedata symbols while preserving saved pixel geometry and resource units.

Co-Authored-By: Codex <codex@openai.com>
@hzqst
hzqst merged commit 22bc05b into main Oct 25, 2026
3 checks passed
@hzqst
hzqst deleted the fix/buildmode-editor-dpi branch October 25, 2026 14:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[VGUI2Extension][czero] VGUI 编辑器在 2K 及以上分辨率下错位

1 participant