diff --git a/Libraries/LibGUI/ScrollBar.cpp b/Libraries/LibGUI/ScrollBar.cpp index 5c468b5ad5..500afbed07 100644 --- a/Libraries/LibGUI/ScrollBar.cpp +++ b/Libraries/LibGUI/ScrollBar.cpp @@ -279,14 +279,12 @@ void ScrollBar::mousedown_event(MouseEvent& event) return; if (decrement_button_rect().contains(event.position())) { - m_automatic_scrolling_kind = AutomaticScrollingKind::DecrementButton; - set_automatic_scrolling_active(true); + set_automatic_scrolling_active(true, AutomaticScrollingKind::DecrementButton); update(); return; } if (increment_button_rect().contains(event.position())) { - m_automatic_scrolling_kind = AutomaticScrollingKind::IncrementButton; - set_automatic_scrolling_active(true); + set_automatic_scrolling_active(true, AutomaticScrollingKind::IncrementButton); update(); return; } @@ -312,8 +310,7 @@ void ScrollBar::mouseup_event(MouseEvent& event) if (event.button() != MouseButton::Left) return; m_scrubber_in_use = false; - m_automatic_scrolling_kind = AutomaticScrollingKind::None; - set_automatic_scrolling_active(false); + set_automatic_scrolling_active(false, AutomaticScrollingKind::None); m_scrubbing = false; update(); } @@ -326,8 +323,10 @@ void ScrollBar::mousewheel_event(MouseEvent& event) Widget::mousewheel_event(event); } -void ScrollBar::set_automatic_scrolling_active(bool active) +void ScrollBar::set_automatic_scrolling_active(bool active, AutomaticScrollingKind kind) { + m_automatic_scrolling_kind = kind; + if (active) { on_automatic_scrolling_timer_fired(); m_automatic_scrolling_timer->start(); @@ -376,9 +375,9 @@ void ScrollBar::mousemove_event(MouseEvent& event) update(); if (m_automatic_scrolling_kind == AutomaticScrollingKind::DecrementButton) - set_automatic_scrolling_active(m_hovered_component == Component::DecrementButton); + set_automatic_scrolling_active(m_hovered_component == Component::DecrementButton, m_automatic_scrolling_kind); else if (m_automatic_scrolling_kind == AutomaticScrollingKind::IncrementButton) - set_automatic_scrolling_active(m_hovered_component == Component::IncrementButton); + set_automatic_scrolling_active(m_hovered_component == Component::IncrementButton, m_automatic_scrolling_kind); } if (!m_scrubbing) return; diff --git a/Libraries/LibGUI/ScrollBar.h b/Libraries/LibGUI/ScrollBar.h index 106d87935d..2ab1f79b93 100644 --- a/Libraries/LibGUI/ScrollBar.h +++ b/Libraries/LibGUI/ScrollBar.h @@ -78,6 +78,12 @@ private: virtual void leave_event(Core::Event&) override; virtual void change_event(Event&) override; + enum class AutomaticScrollingKind { + None = 0, + DecrementButton, + IncrementButton, + }; + int default_button_size() const { return 16; } int button_size() const { return length(orientation()) <= (default_button_size() * 2) ? length(orientation()) / 2 : default_button_size(); } int button_width() const { return orientation() == Orientation::Vertical ? width() : button_size(); } @@ -91,7 +97,7 @@ private: int visible_scrubber_size() const; int scrubbable_range_in_pixels() const; void on_automatic_scrolling_timer_fired(); - void set_automatic_scrolling_active(bool); + void set_automatic_scrolling_active(bool, AutomaticScrollingKind); void scroll_to_position(const Gfx::IntPoint&); void scroll_by_page(const Gfx::IntPoint&); @@ -111,12 +117,6 @@ private: Component m_hovered_component { Component::Invalid }; bool m_scrubber_in_use { false }; - enum class AutomaticScrollingKind { - None = 0, - DecrementButton, - IncrementButton, - }; - AutomaticScrollingKind m_automatic_scrolling_kind { AutomaticScrollingKind::None }; RefPtr m_automatic_scrolling_timer; };