ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
TextInputGate类 参考final

文本输入聚焦门(进程级单例) 更多...

#include <TextInputGate.h>

Public 成员函数

 TextInputGate (const TextInputGate &)=delete
TextInputGateoperator= (const TextInputGate &)=delete
void requestFocus (UITextInput *control)
 请求聚焦某控件:失焦当前控件,启动新控件的文本输入模式
void releaseFocus (UITextInput *control)
 失焦指定控件(仅当它当前正在聚焦时才生效)
void clearFocus ()
 强制清空焦点(例如场景销毁时)
void updateCursorRect (const SDL_Rect &rect, int cursor)
 通知 IME 光标位置变化(用窗口坐标的 SDL_Rect)

静态 Public 成员函数

static TextInputGateGetInstance ()
static bool HandleEvent (const SDL_Event &event)
 获取原生事件转发入口(由 Game 在 PollEvent 后调用)
static bool HasFocus ()
 当前是否有聚焦控件

友元

class EngineContext

详细描述

文本输入聚焦门(进程级单例)

在任意时刻至多有一个 UITextInput 控件处于"聚焦"状态,负责:

  1. 聚焦时 SDL_StartTextInput(window),失焦时 SDL_StopTextInput(window);
  2. 把 SDL 的 TEXT_INPUT / TEXT_EDITING 事件转发给当前聚焦控件(事件指针由 SDL 持有,控件必须在事件回调里立即拷贝字节);
  3. 在失焦/销毁时清理 IME 组合(SDL_ClearComposition)。

UIRenderSystem 通过 setFocus / clearFocus 管理聚焦;UITextInput 析构时自动解绑。

构造及析构函数说明

◆ TextInputGate()

TextInputGate ( const TextInputGate & )
delete

成员函数说明

◆ clearFocus()

void clearFocus ( )

强制清空焦点(例如场景销毁时)

◆ GetInstance()

TextInputGate & GetInstance ( )
static

◆ HandleEvent()

bool HandleEvent ( const SDL_Event & event)
inlinestatic

获取原生事件转发入口(由 Game 在 PollEvent 后调用)

返回
true 表示事件已被聚焦控件消费(调用方应跳过 Input 处理)

◆ HasFocus()

bool HasFocus ( )
static

当前是否有聚焦控件

◆ operator=()

TextInputGate & operator= ( const TextInputGate & )
delete

◆ releaseFocus()

void releaseFocus ( UITextInput * control)

失焦指定控件(仅当它当前正在聚焦时才生效)

◆ requestFocus()

void requestFocus ( UITextInput * control)

请求聚焦某控件:失焦当前控件,启动新控件的文本输入模式

◆ updateCursorRect()

void updateCursorRect ( const SDL_Rect & rect,
int cursor )

通知 IME 光标位置变化(用窗口坐标的 SDL_Rect)

◆ EngineContext

friend class EngineContext
friend

该类的文档由以下文件生成: