summaryrefslogtreecommitdiff
path: root/Userland/Libraries
diff options
context:
space:
mode:
authorAndreas Oppebøen <andreas.oppeboen@gmail.com>2023-02-28 23:43:46 +0100
committerAndreas Kling <kling@serenityos.org>2023-03-24 10:33:22 +0100
commitc8547124e2ee4c2efb7421675ff38e209630044e (patch)
tree660b1117cff7c2d70c949f13bb80861f8b8ca1fb /Userland/Libraries
parent6a3e217c5c08db202b05710f247f4130ec625ec0 (diff)
downloadserenity-c8547124e2ee4c2efb7421675ff38e209630044e.zip
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.
Diffstat (limited to 'Userland/Libraries')
-rw-r--r--Userland/Libraries/LibGUI/Slider.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/Userland/Libraries/LibGUI/Slider.cpp b/Userland/Libraries/LibGUI/Slider.cpp
index 350225cfa8..45e165d899 100644
--- a/Userland/Libraries/LibGUI/Slider.cpp
+++ b/Userland/Libraries/LibGUI/Slider.cpp
@@ -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);