From 326261094d86c960529c078f071ab5a0f0165a63 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Tue, 11 Aug 2020 21:33:03 -0400 Subject: [PATCH] ScrollBar: Simplify ScrollBar::scroll_to_position() --- Libraries/LibGUI/ScrollBar.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/Libraries/LibGUI/ScrollBar.cpp b/Libraries/LibGUI/ScrollBar.cpp index e447aa3a83..056c8de359 100644 --- a/Libraries/LibGUI/ScrollBar.cpp +++ b/Libraries/LibGUI/ScrollBar.cpp @@ -330,22 +330,14 @@ void ScrollBar::set_automatic_scrolling_active(bool active) } } -void ScrollBar::scroll_to_position(const Gfx::IntPoint& position) +void ScrollBar::scroll_to_position(const Gfx::IntPoint& click_position) { float range_size = m_max - m_min; float available = scrubbable_range_in_pixels(); - float x = ::max(0, position.x() - button_width() - button_width() / 2); - float y = ::max(0, position.y() - button_height() - button_height() / 2); - - float rel_x = x / available; - float rel_y = y / available; - - if (orientation() == Orientation::Vertical) - set_value(m_min + rel_y * range_size); - else - set_value(m_min + rel_x * range_size); - + float x_or_y = ::max(0, click_position.primary_offset_for_orientation(orientation()) - button_width() - button_width() / 2); + float rel_x_or_y = x_or_y / available; + set_value(m_min + rel_x_or_y * range_size); } void ScrollBar::mousemove_event(MouseEvent& event)