From dc3c6be6f22ce7d3ea2da1f8232188649f1de55f Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 20 Aug 2019 20:10:02 +0200 Subject: [PATCH] GScrollBar: Allow scrolling the scrollbar by mouse-wheeling over it --- Libraries/LibGUI/GScrollBar.cpp | 8 ++++++++ Libraries/LibGUI/GScrollBar.h | 3 +++ 2 files changed, 11 insertions(+) diff --git a/Libraries/LibGUI/GScrollBar.cpp b/Libraries/LibGUI/GScrollBar.cpp index ce1f2efebf..e8d5e811f9 100644 --- a/Libraries/LibGUI/GScrollBar.cpp +++ b/Libraries/LibGUI/GScrollBar.cpp @@ -281,6 +281,14 @@ void GScrollBar::mouseup_event(GMouseEvent& event) update(); } +void GScrollBar::mousewheel_event(GMouseEvent& event) +{ + if (!is_scrollable()) + return; + set_value(value() + event.wheel_delta()); + GWidget::mousewheel_event(event); +} + void GScrollBar::set_automatic_scrolling_active(bool active) { if (active) { diff --git a/Libraries/LibGUI/GScrollBar.h b/Libraries/LibGUI/GScrollBar.h index 289d0c283d..e17014ebb8 100644 --- a/Libraries/LibGUI/GScrollBar.h +++ b/Libraries/LibGUI/GScrollBar.h @@ -12,6 +12,8 @@ public: Orientation orientation() const { return m_orientation; } + bool is_scrollable() const { return max() != min(); } + int value() const { return m_value; } int min() const { return m_min; } int max() const { return m_max; } @@ -41,6 +43,7 @@ private: virtual void mousedown_event(GMouseEvent&) override; virtual void mouseup_event(GMouseEvent&) override; virtual void mousemove_event(GMouseEvent&) override; + virtual void mousewheel_event(GMouseEvent&) override; virtual void leave_event(CEvent&) override; virtual void change_event(GEvent&) override;