LibGUI: Use cursor position when calculating autoscroll delta

Autoscroll delta now takes into account the cursor
position relative to the widget inner rect height
to allow for faster rubber band autoscrolling.
This commit is contained in:
Ahmed Hussein 2023-05-07 22:00:24 +03:00 committed by Jelle Raaijmakers
commit 214eaebe73
Notes: sideshowbarker 2024-07-17 02:55:44 +09:00

View file

@ -333,9 +333,9 @@ Gfx::IntPoint AbstractScrollableWidget::automatic_scroll_delta_from_position(Gfx
Gfx::IntPoint delta { 0, 0 };
if (pos.y() < m_autoscroll_threshold)
delta.set_y(clamp(-(m_autoscroll_threshold - pos.y()), -m_autoscroll_threshold, 0));
delta.set_y(AK::min(pos.y() - m_autoscroll_threshold, 0));
else if (pos.y() > widget_inner_rect().height() - m_autoscroll_threshold)
delta.set_y(clamp(m_autoscroll_threshold - (widget_inner_rect().height() - pos.y()), 0, m_autoscroll_threshold));
delta.set_y(AK::max(pos.y() + m_autoscroll_threshold - widget_inner_rect().height(), 0));
if (pos.x() < m_autoscroll_threshold)
delta.set_x(clamp(-(m_autoscroll_threshold - pos.x()), -m_autoscroll_threshold, 0));