fix(ui): implement key repeating (e.g. backspace) for CSimpleEditBox

This commit is contained in:
VDm 2025-08-02 18:42:09 +04:00
parent 982aedbc02
commit 6c5c560dc7
2 changed files with 18 additions and 0 deletions

View File

@ -891,6 +891,23 @@ int32_t CSimpleEditBox::OnLayerKeyDown(const CKeyEvent& evt) {
}
}
int32_t CSimpleEditBox::OnLayerKeyDownRepeat(const CKeyEvent& evt) {
if (!this->m_visible) {
return 0;
}
if (!CSimpleEditBox::s_currentFocus && this->m_autoFocus) {
CSimpleEditBox::SetKeyboardFocus(this);
return this->OnLayerKeyDown(evt);
}
if (this == CSimpleEditBox::s_currentFocus) {
return this->OnLayerKeyDown(evt);
}
return 0;
}
int32_t CSimpleEditBox::OnLayerMouseDown(const CMouseEvent& evt, const char* btn) {
int32_t eaten = CSimpleFrame::OnLayerMouseDown(evt, btn);

View File

@ -72,6 +72,7 @@ class CSimpleEditBox : public CSimpleFrame, CSimpleFontedFrame {
virtual void OnFrameSizeChanged(float width, float height);
virtual int32_t OnLayerChar(const CCharEvent& evt);
virtual int32_t OnLayerKeyDown(const CKeyEvent& evt);
virtual int32_t OnLayerKeyDownRepeat(const CKeyEvent& evt);
virtual int32_t OnLayerMouseDown(const CMouseEvent& evt, const char* btn);
virtual int32_t OnLayerMouseUp(const CMouseEvent& evt, const char* btn);
virtual void FontUpdated(CSimpleFontedFrameFont* font, int32_t a3);