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;
}
void CSimpleEditBox::ClearKeyboardFocus(CSimpleEditBox* editBox, bool) {
if (CSimpleEditBox::s_currentFocus == editBox) {
CSimpleEditBox::s_currentFocus = nullptr;
// TODO: CSimpleEditBox::OnFocusChange
}
}
CSimpleEditBox::CSimpleEditBox(CSimpleFrame* parent) : CSimpleFrame(parent) {
this->m_autoFocus = 1;
this->m_multiline = 0;

View File

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