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
parent 064b7a6216
commit 214eaebe73

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));