1.6 KiB
1.6 KiB
TextInputPopupState
命名空间: XCEngine::Editor::UI
类型: template class
源文件: editor/src/UI/PopupState.h
签名
template <size_t BufferCapacity>
class TextInputPopupState;
作用
为单字段文本输入 popup 提供固定容量缓冲区和延迟打开状态。
公开接口
void RequestOpen(const char* initialValue = "");
void ConsumeOpenRequest(const char* popupId);
void SetValue(const char* value);
void Clear();
bool Empty() const;
char* Buffer();
const char* Buffer() const;
constexpr size_t BufferSize() const;
当前实现行为
RequestOpen(initialValue)- 先把初始值写入内部字符缓冲区
- 再通过内部
DeferredPopupState记录待开请求
ConsumeOpenRequest(...)- 转发给内部 popup 状态,在合适帧调用
ImGui::OpenPopup(...)
- 转发给内部 popup 状态,在合适帧调用
SetValue(value)- 当传入非空且非空串时,使用
strcpy_s写入缓冲区 - 否则会把缓冲区首字符置零
- 当传入非空且非空串时,使用
Clear()- 当前只清空文本缓冲区
- 不会额外清掉内部 popup 请求状态
Empty()- 通过检查首字符是否为
'\0'判断内容是否为空
- 通过检查首字符是否为
Buffer()/BufferSize()- 供
ImGui::InputText(...)一类 API 直接消费
- 供
设计含义
- 这个 helper 适合“打开 popup 后输入一段名字”的轻量对话框。
- 它把常见的
char buffer[N] + OpenPopup模式封装成可复用状态。
当前实现边界
- 容量是模板参数,调用方需要自己选择缓冲区大小。
- 当前不提供校验、提交态或多字段表单状态。