diff --git a/src/ui/CSimpleEditBox.cpp b/src/ui/CSimpleEditBox.cpp index 6945ce9..981d315 100644 --- a/src/ui/CSimpleEditBox.cpp +++ b/src/ui/CSimpleEditBox.cpp @@ -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; diff --git a/src/ui/CSimpleEditBox.hpp b/src/ui/CSimpleEditBox.hpp index 5fb7e26..f7dbb3b 100644 --- a/src/ui/CSimpleEditBox.hpp +++ b/src/ui/CSimpleEditBox.hpp @@ -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; diff --git a/src/ui/CSimpleEditBoxScript.cpp b/src/ui/CSimpleEditBoxScript.cpp index 7b98f94..de2438a 100644 --- a/src/ui/CSimpleEditBoxScript.cpp +++ b/src/ui/CSimpleEditBoxScript.cpp @@ -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(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(FrameScript_GetObjectThis(L, type)); + + CSimpleEditBox::ClearKeyboardFocus(object, true); + return 0; } int32_t CSimpleEditBox_HasFocus(lua_State* L) {