diff options
author | Karol Kosek <krkk@krkk.ct8.pl> | 2021-09-02 22:33:34 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-09-03 02:32:43 +0200 |
commit | 43a800a83857709b0adca35f2f3a228680431ed0 (patch) | |
tree | 708bf5ef62c9080035f3eefa2c90c73688bf78cd /Userland/Libraries/LibGUI/Slider.cpp | |
parent | dabbe4ee27a8a9c94160a357545b29c53fb426e0 (diff) | |
download | serenity-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.cpp | 4 |
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)); |