summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGUI/Slider.cpp
diff options
context:
space:
mode:
authorKarol Kosek <krkk@krkk.ct8.pl>2021-09-02 22:33:34 +0200
committerAndreas Kling <kling@serenityos.org>2021-09-03 02:32:43 +0200
commit43a800a83857709b0adca35f2f3a228680431ed0 (patch)
tree708bf5ef62c9080035f3eefa2c90c73688bf78cd /Userland/Libraries/LibGUI/Slider.cpp
parentdabbe4ee27a8a9c94160a357545b29c53fb426e0 (diff)
downloadserenity-43a800a83857709b0adca35f2f3a228680431ed0.zip
LibGUI: Set correct value on click with set jump_to_cursor() in Slider
Prior this change, clicking on a slider with set jump_to_cursor() flag didn't exactly match the knob to the mouse position, and therefore the slider values were a bit off in the corners. The calculation used the whole widget size to set new values, which isn't correct as the track slider has margins on both ends. I noticed this while seeking in the Sound Player.
Diffstat (limited to 'Userland/Libraries/LibGUI/Slider.cpp')
-rw-r--r--Userland/Libraries/LibGUI/Slider.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/Userland/Libraries/LibGUI/Slider.cpp b/Userland/Libraries/LibGUI/Slider.cpp
index 02665a02e9..5c07c19d36 100644
--- a/Userland/Libraries/LibGUI/Slider.cpp
+++ b/Userland/Libraries/LibGUI/Slider.cpp
@@ -93,9 +93,9 @@ void Slider::mousedown_event(MouseEvent& event)
if (jump_to_cursor()) {
float normalized_mouse_offset = 0.0f;
if (orientation() == Orientation::Vertical) {
- normalized_mouse_offset = static_cast<float>(mouse_offset) / static_cast<float>(height());
+ normalized_mouse_offset = static_cast<float>(mouse_offset - track_margin()) / static_cast<float>(inner_rect().height());
} else {
- normalized_mouse_offset = static_cast<float>(mouse_offset) / static_cast<float>(width());
+ normalized_mouse_offset = static_cast<float>(mouse_offset - track_margin()) / static_cast<float>(inner_rect().width());
}
int new_value = static_cast<int>(min() + ((max() - min()) * normalized_mouse_offset));