From 9eb356d9f29a881e05937a0089d88154cfc6364a Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 27 Jul 2016 20:19:30 +0200 Subject: [PATCH] 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. --- gtk/gtkscrolledwindow.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index df7302c8f8..17f25e015a 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -3503,12 +3503,12 @@ gtk_scrolled_window_scroll_event (GtkWidget *widget, priv->scroll_events_overshoot_id = 0; } + if (start_deceleration) + uninstall_scroll_cursor (scrolled_window); + if (start_deceleration && scroll_history_finish (scrolled_window, &vel_x, &vel_y)) - { - uninstall_scroll_cursor (scrolled_window); - gtk_scrolled_window_decelerate (scrolled_window, vel_x, vel_y); - } + gtk_scrolled_window_decelerate (scrolled_window, vel_x, vel_y); else if (_gtk_scrolled_window_get_overshoot (scrolled_window, NULL, NULL)) { priv->scroll_events_overshoot_id =