GtkScrolledWindow: Always uninstall scroll cursor when starting deceleration

It could be the case that the last scroll event is received long after any
previous scroll event, in this case the last scroll event discards all "old"
scroll events, and scroll_history_finish() returns FALSE because there's no
time/offset deltas in the scroll history.

This is desired so we don't trigger the deceleration effect if there was no
effective velocity, we still must reset the installed scroll cursor, so take
it out of this if() condition.
This commit is contained in:
Carlos Garnacho 2016-07-27 20:19:30 +02:00
parent c0f66ed1ea
commit 9eb356d9f2

View File

@ -3503,12 +3503,12 @@ gtk_scrolled_window_scroll_event (GtkWidget *widget,
priv->scroll_events_overshoot_id = 0; priv->scroll_events_overshoot_id = 0;
} }
if (start_deceleration)
uninstall_scroll_cursor (scrolled_window);
if (start_deceleration && if (start_deceleration &&
scroll_history_finish (scrolled_window, &vel_x, &vel_y)) scroll_history_finish (scrolled_window, &vel_x, &vel_y))
{ gtk_scrolled_window_decelerate (scrolled_window, vel_x, vel_y);
uninstall_scroll_cursor (scrolled_window);
gtk_scrolled_window_decelerate (scrolled_window, vel_x, vel_y);
}
else if (_gtk_scrolled_window_get_overshoot (scrolled_window, NULL, NULL)) else if (_gtk_scrolled_window_get_overshoot (scrolled_window, NULL, NULL))
{ {
priv->scroll_events_overshoot_id = priv->scroll_events_overshoot_id =