From bc6ff35428c61997a056316cb6ffbf02a970bbe2 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 4 Feb 2019 10:34:56 +0100 Subject: [PATCH] LibGUI: GTextBox should only run a caret blink timer when focused. --- LibGUI/GTextBox.cpp | 11 ++++++++++- LibGUI/GTextBox.h | 2 ++ LibGUI/GWidget.cpp | 3 ++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/LibGUI/GTextBox.cpp b/LibGUI/GTextBox.cpp index f09c2cbe86..a04b1c9474 100644 --- a/LibGUI/GTextBox.cpp +++ b/LibGUI/GTextBox.cpp @@ -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(); +} diff --git a/LibGUI/GTextBox.h b/LibGUI/GTextBox.h index ad9c8dd5f8..8c203155ac 100644 --- a/LibGUI/GTextBox.h +++ b/LibGUI/GTextBox.h @@ -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(); diff --git a/LibGUI/GWidget.cpp b/LibGUI/GWidget.cpp index ef7a118b99..2a4c2d419a 100644 --- a/LibGUI/GWidget.cpp +++ b/LibGUI/GWidget.cpp @@ -39,8 +39,9 @@ void GWidget::event(GEvent& event) m_has_pending_paint_event = false; return paint_event(static_cast(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(event)); case GEvent::Hide: