LibGUI: GTextBox should only run a caret blink timer when focused.

This commit is contained in:
Andreas Kling 2019-02-04 10:34:56 +01:00
parent c0cffe1134
commit bc6ff35428
Notes: sideshowbarker 2024-07-19 15:52:32 +09:00
3 changed files with 14 additions and 2 deletions

View file

@ -8,7 +8,6 @@
GTextBox::GTextBox(GWidget* parent)
: GWidget(parent)
{
start_timer(500);
}
GTextBox::~GTextBox()
@ -138,3 +137,13 @@ void GTextBox::timer_event(GTimerEvent&)
m_cursor_blink_state = !m_cursor_blink_state;
update();
}
void GTextBox::focusin_event(GEvent&)
{
start_timer(500);
}
void GTextBox::focusout_event(GEvent&)
{
stop_timer();
}

View file

@ -20,6 +20,8 @@ private:
virtual void mousedown_event(GMouseEvent&) override;
virtual void keydown_event(GKeyEvent&) override;
virtual void timer_event(GTimerEvent&) override;
virtual void focusin_event(GEvent&) override;
virtual void focusout_event(GEvent&) override;
virtual bool accepts_focus() const override { return true; }
void handle_backspace();

View file

@ -39,8 +39,9 @@ void GWidget::event(GEvent& event)
m_has_pending_paint_event = false;
return paint_event(static_cast<GPaintEvent&>(event));
case GEvent::FocusIn:
case GEvent::FocusOut:
return focusin_event(event);
case GEvent::FocusOut:
return focusout_event(event);
case GEvent::Show:
return show_event(static_cast<GShowEvent&>(event));
case GEvent::Hide: