gtkscrolledwindow: Do not try to doubly trigger deceleration
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 28 Feb 2022 19:27:43 +0000 (20:27 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 28 Feb 2022 19:27:43 +0000 (20:27 +0100)
This may come from different sources at around the same time, e.g.
a hold gesture while on overshoot. Avoid doing that if an
animation is already set.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4730
gtk/gtkscrolledwindow.c

index 1842dcd528676e5acb1fd80e5fe8fd2400fb67b8..4879fee68d4ad7ab2641eef2e1fdca3dafe84a60 100644 (file)
@@ -1052,7 +1052,8 @@ gtk_scrolled_window_decelerate (GtkScrolledWindow *scrolled_window,
 
   if (priv->x_velocity != 0 || priv->y_velocity != 0 || overshoot)
     {
-      gtk_scrolled_window_start_deceleration (scrolled_window);
+      if (priv->deceleration_id == 0)
+        gtk_scrolled_window_start_deceleration (scrolled_window);
       priv->x_velocity = priv->y_velocity = 0;
     }
 }