2.2 KiB
2.2 KiB
PopupState
命名空间: XCEngine::Editor::UI
类型: header-helper
源文件: editor/src/UI/PopupState.h
描述: 提供延迟弹窗、定向弹窗、文本输入弹窗和行内重命名状态容器。
概述
PopupState.h 当前包含四类非常实用的 UI 状态辅助类型:
- DeferredPopupState
- TargetedPopupState
- TextInputPopupState
- InlineTextEditState<ItemId, BufferCapacity>
它们共同解决一个问题:把 ImGui 的即时模式弹窗交互变成可维护的状态机。
当前实现
| 类型 | 作用 |
|---|---|
| DeferredPopupState | 负责“下一帧打开弹窗”。 |
| TargetedPopupState | 在打开弹窗的同时绑定一个目标对象。 |
| TextInputPopupState | 内置固定容量字符缓冲区,适合轻量文本输入 popup。 |
| InlineTextEditState<ItemId, BufferCapacity> | 适合 Hierarchy / Project 中的行内重命名。 |
设计说明
即时模式 UI 最大的痛点之一,就是弹窗、右键菜单和重命名输入框的状态容易散。
把这些交互状态抽成小类型,是非常划算的工程化投资:
- 面板类不会充满零散布尔标志和字符数组
- 打开请求和真正
OpenPopup()的时机能被清晰区分 - 复用性很好,多个面板都能直接用
当前限制
- 输入缓冲区容量是模板常量,需要调用者自己选大小
- 没有更复杂的校验、历史记录或多字段表单状态
- 目标对象状态主要依赖值拷贝或轻量句柄,不负责更深生命周期管理