Files
XCEngine/docs/api/XCEngine/Editor/UI/PopupState/PopupState.md

2.2 KiB

PopupState

命名空间: XCEngine::Editor::UI

类型: header-helper

源文件: editor/src/UI/PopupState.h

描述: 提供延迟弹窗、定向弹窗、文本输入弹窗和行内重命名状态容器。

概述

PopupState.h 当前包含四类非常实用的 UI 状态辅助类型:

它们共同解决一个问题:把 ImGui 的即时模式弹窗交互变成可维护的状态机。

当前实现

类型 作用
DeferredPopupState 负责“下一帧打开弹窗”。
TargetedPopupState 在打开弹窗的同时绑定一个目标对象。
TextInputPopupState 内置固定容量字符缓冲区,适合轻量文本输入 popup。
InlineTextEditState<ItemId, BufferCapacity> 适合 Hierarchy / Project 中的行内重命名。

设计说明

即时模式 UI 最大的痛点之一,就是弹窗、右键菜单和重命名输入框的状态容易散。
把这些交互状态抽成小类型,是非常划算的工程化投资:

  • 面板类不会充满零散布尔标志和字符数组
  • 打开请求和真正 OpenPopup() 的时机能被清晰区分
  • 复用性很好,多个面板都能直接用

当前限制

  • 输入缓冲区容量是模板常量,需要调用者自己选大小
  • 没有更复杂的校验、历史记录或多字段表单状态
  • 目标对象状态主要依赖值拷贝或轻量句柄,不负责更深生命周期管理

相关文档