feat(ui): implement SetFocus and ClearFocus script methods (CSimpleEditBox)

This commit is contained in:
VDm 2025-03-28 00:54:37 +04:00
parent 03ba4ccbb1
commit 465b3844de
3 changed files with 18 additions and 2 deletions

View file

@ -79,6 +79,13 @@ void CSimpleEditBox::SetKeyboardFocus(CSimpleEditBox* editBox) {
editBox->m_dirtyFlags |= 0x4; editBox->m_dirtyFlags |= 0x4;
} }
void CSimpleEditBox::ClearKeyboardFocus(CSimpleEditBox* editBox, bool) {
if (CSimpleEditBox::s_currentFocus == editBox) {
CSimpleEditBox::s_currentFocus = nullptr;
// TODO: CSimpleEditBox::OnFocusChange
}
}
CSimpleEditBox::CSimpleEditBox(CSimpleFrame* parent) : CSimpleFrame(parent) { CSimpleEditBox::CSimpleEditBox(CSimpleFrame* parent) : CSimpleFrame(parent) {
this->m_autoFocus = 1; this->m_autoFocus = 1;
this->m_multiline = 0; this->m_multiline = 0;

View file

@ -19,6 +19,7 @@ class CSimpleEditBox : public CSimpleFrame, CSimpleFontedFrame {
static int32_t GetObjectType(); static int32_t GetObjectType();
static void RegisterScriptMethods(lua_State* L); static void RegisterScriptMethods(lua_State* L);
static void SetKeyboardFocus(CSimpleEditBox* editBox); static void SetKeyboardFocus(CSimpleEditBox* editBox);
static void ClearKeyboardFocus(CSimpleEditBox* editBox, bool);
// Member variables // Member variables
int32_t m_autoFocus : 1; int32_t m_autoFocus : 1;

View file

@ -176,11 +176,19 @@ int32_t CSimpleEditBox_GetTextInsets(lua_State* L) {
} }
int32_t CSimpleEditBox_SetFocus(lua_State* L) { int32_t CSimpleEditBox_SetFocus(lua_State* L) {
WHOA_UNIMPLEMENTED(0); int32_t type = CSimpleEditBox::GetObjectType();
auto object = static_cast<CSimpleEditBox*>(FrameScript_GetObjectThis(L, type));
CSimpleEditBox::SetKeyboardFocus(object);
return 0;
} }
int32_t CSimpleEditBox_ClearFocus(lua_State* L) { int32_t CSimpleEditBox_ClearFocus(lua_State* L) {
WHOA_UNIMPLEMENTED(0); int32_t type = CSimpleEditBox::GetObjectType();
auto object = static_cast<CSimpleEditBox*>(FrameScript_GetObjectThis(L, type));
CSimpleEditBox::ClearKeyboardFocus(object, true);
return 0;
} }
int32_t CSimpleEditBox_HasFocus(lua_State* L) { int32_t CSimpleEditBox_HasFocus(lua_State* L) {