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

1.4 KiB

DeferredPopupState

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

类型: class

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

作用

表示“下一帧打开一个 ImGui popup”的最小延迟打开状态。

公开接口

void RequestOpen();
void ConsumeOpenRequest(const char* popupId);
bool HasPendingOpenRequest() const;
void Clear();

当前实现行为

  • RequestOpen()
    • 只把内部 m_openRequested 设为 true
    • 当前帧不会立刻调用 ImGui::OpenPopup(...)
  • ConsumeOpenRequest(popupId)
    • 只有当存在待消费请求时才会调用 ImGui::OpenPopup(popupId)
    • 成功消费后会把待开标志清回 false
  • HasPendingOpenRequest()
    • 返回当前是否还保留未消费的打开请求
  • Clear()
    • 只清空待开标志

典型使用位置

  • MainMenuActionRouter 用它驱动 Help -> About
  • InspectorActionRouter 用它驱动 Add Component
  • HierarchyActionRouter 用它驱动层级空白区域或选项 popup
  • AboutEditorDialog 会在真正绘制前调用 ConsumeOpenRequest(...)

设计含义

  • 这类 helper 的核心价值是把“请求打开 popup”和“实际调用 ImGui::OpenPopup() 的帧时机”分开。
  • 这样调用方不需要自己维护散落的布尔标志。

相关文档