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;