From da349607a3da9fa9f347f12f07f752e39c80f57d Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Mon, 8 Jan 2024 17:43:09 +0000 Subject: [PATCH] LibGUI: Make NumericInput respond to the mouse wheel Scroll the mouse wheel over a NumericInput to quickly change the value. This matches the SpinBox behavior. --- Userland/Libraries/LibGUI/NumericInput.cpp | 9 +++++++++ Userland/Libraries/LibGUI/NumericInput.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/Userland/Libraries/LibGUI/NumericInput.cpp b/Userland/Libraries/LibGUI/NumericInput.cpp index 1e6c5d7c87..518db3b02d 100644 --- a/Userland/Libraries/LibGUI/NumericInput.cpp +++ b/Userland/Libraries/LibGUI/NumericInput.cpp @@ -90,4 +90,13 @@ void NumericInput::set_current_number(i64 number, GUI::AllowCallback allow_callb on_number_changed(m_current_number); } +void NumericInput::mousewheel_event(GUI::MouseEvent& event) +{ + auto wheel_delta = event.wheel_delta_y() / abs(event.wheel_delta_y()); + if (event.modifiers() == KeyModifier::Mod_Ctrl) + wheel_delta *= 6; + set_current_number(m_current_number - wheel_delta); + event.accept(); +} + } diff --git a/Userland/Libraries/LibGUI/NumericInput.h b/Userland/Libraries/LibGUI/NumericInput.h index fb9e0a3f09..cde7e8ea78 100644 --- a/Userland/Libraries/LibGUI/NumericInput.h +++ b/Userland/Libraries/LibGUI/NumericInput.h @@ -22,6 +22,8 @@ public: void set_max_number(i64 number); void set_current_number(i64 number, GUI::AllowCallback allow_callback = GUI::AllowCallback::Yes); + virtual void mousewheel_event(GUI::MouseEvent&) override; + private: NumericInput(); void on_focus_lost();