mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 21:58:12 +00:00
LibGUI: Ignore scroll length multiplier in SpinBoxes & Sliders
Prevents discrete values from being skipped when using the mouse wheel on SpinBoxes and proportional Sliders. Wheel delta can be accelerated by holding Ctrl.
This commit is contained in:
parent
f318ab6bed
commit
bd34cdbbb3
2 changed files with 10 additions and 4 deletions
|
@ -144,14 +144,17 @@ void Slider::mouseup_event(MouseEvent& event)
|
|||
void Slider::mousewheel_event(MouseEvent& event)
|
||||
{
|
||||
auto acceleration_modifier = step();
|
||||
auto wheel_delta = event.wheel_delta();
|
||||
|
||||
if (event.modifiers() == KeyModifier::Mod_Ctrl && knob_size_mode() == KnobSizeMode::Fixed)
|
||||
if (event.modifiers() == KeyModifier::Mod_Ctrl)
|
||||
acceleration_modifier *= 6;
|
||||
if (knob_size_mode() == KnobSizeMode::Proportional)
|
||||
wheel_delta /= abs(wheel_delta);
|
||||
|
||||
if (orientation() == Orientation::Horizontal)
|
||||
set_value(value() - event.wheel_delta() * acceleration_modifier);
|
||||
set_value(value() - wheel_delta * acceleration_modifier);
|
||||
else
|
||||
set_value(value() + event.wheel_delta() * acceleration_modifier);
|
||||
set_value(value() + wheel_delta * acceleration_modifier);
|
||||
|
||||
Widget::mousewheel_event(event);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue