1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:37:35 +00:00

LibGUI: Fix slider so dragging handle left and right feels similar

When dragging the slider handle left/down, the handle would
snap to lower value with the slightest move of the mouse. When dragging
to the right/up however, it would take a lot more movement to cause
a change in value. This asymmetry made it feel really awkward to drag
the slider. It was caused by always rounding down using a cast to int.
By rounding to the nearest integer first, we ensure symmetric behavior.
This commit is contained in:
Andreas Oppebøen 2023-02-28 23:43:46 +01:00 committed by Andreas Kling
parent 6a3e217c5c
commit c8547124e2

View file

@ -133,7 +133,7 @@ void Slider::mousemove_event(MouseEvent& event)
float scrubbable_range = inner_rect().primary_size_for_orientation(orientation());
float value_steps_per_scrubbed_pixel = (max() - min()) / scrubbable_range;
float new_value = m_drag_origin_value + (value_steps_per_scrubbed_pixel * delta);
set_value((int)new_value);
set_value((int)roundf(new_value));
return;
}
return Widget::mousemove_event(event);