diff --git a/src/ui/simple/CSimpleEditBox.cpp b/src/ui/simple/CSimpleEditBox.cpp index 58fedf3..0ac5931 100644 --- a/src/ui/simple/CSimpleEditBox.cpp +++ b/src/ui/simple/CSimpleEditBox.cpp @@ -79,6 +79,30 @@ void CSimpleEditBox::SetKeyboardFocus(CSimpleEditBox* editBox) { editBox->m_dirtyFlags |= 0x4; } +void CSimpleEditBox::ClearKeyboardFocus(CSimpleEditBox* editBox, bool dispatchEvent) { + if (CSimpleEditBox::s_currentFocus != editBox) { + return; + } + + CSimpleEditBox::s_currentFocus = nullptr; + + // TODO + // if (editBox->m_password) { + // OsInputEnableSecureMode(0); + // } + + // TODO + // if (!(editBox->simpleeditbox_dword4 & 0xC)) { + // CSimpleEditBox::s_currentFocus->Sub963390(); + // } + + if (dispatchEvent) { + editBox->RunOnEditFocusLostScript(); + } + + editBox->m_dirtyFlags |= 0x4; +} + CSimpleEditBox::CSimpleEditBox(CSimpleFrame* parent) : CSimpleFrame(parent) { this->m_autoFocus = 1; this->m_multiline = 0; diff --git a/src/ui/simple/CSimpleEditBox.hpp b/src/ui/simple/CSimpleEditBox.hpp index 067d7e4..987012c 100644 --- a/src/ui/simple/CSimpleEditBox.hpp +++ b/src/ui/simple/CSimpleEditBox.hpp @@ -31,6 +31,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 dispatchEvent); // Member variables int32_t m_autoFocus : 1;