kineticscrolling: Add stop function
authorJosé Expósito <jose.exposito89@gmail.com>
Tue, 22 Jun 2021 16:44:05 +0000 (18:44 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 26 Jan 2022 21:49:53 +0000 (22:49 +0100)
Move the logic to stop kinetic scrolling to its own function and allow
to call it from the outside.

Part-of: <!3454>

gtk/gtkkineticscrolling.c
gtk/gtkkineticscrollingprivate.h

index 87618acd7c60c7cce5a4fb4be0038f89abdeab2b..4eab5dcc84954b4bbf48f68719d65b8412c42aa0 100644 (file)
@@ -202,9 +202,7 @@ gtk_kinetic_scrolling_tick (GtkKineticScrolling *data,
         else if (fabs(data->velocity) < 1 ||
                  (last_time != 0.0 && fabs(data->position - last_position) < 1))
           {
-            data->phase = GTK_KINETIC_SCROLLING_PHASE_FINISHED;
-            data->position = round(data->position);
-            data->velocity = 0;
+            gtk_kinetic_scrolling_stop (data);
           }
         break;
       }
@@ -249,3 +247,13 @@ gtk_kinetic_scrolling_tick (GtkKineticScrolling *data,
   return data->phase != GTK_KINETIC_SCROLLING_PHASE_FINISHED;
 }
 
+void
+gtk_kinetic_scrolling_stop (GtkKineticScrolling *data)
+{
+  if (data->phase == GTK_KINETIC_SCROLLING_PHASE_DECELERATING)
+    {
+      data->phase = GTK_KINETIC_SCROLLING_PHASE_FINISHED;
+      data->position = round (data->position);
+      data->velocity = 0;
+    }
+}
index a531ace4768ea478280084ad11decee2d97bc88e..a519bd7ec05de1c283eb0db70db5e428541f484c 100644 (file)
@@ -50,6 +50,8 @@ gboolean                 gtk_kinetic_scrolling_tick (GtkKineticScrolling  *data,
                                                      double               *position,
                                                      double               *velocity);
 
+void                     gtk_kinetic_scrolling_stop (GtkKineticScrolling  *data);
+
 G_END_DECLS
 
 #endif /* __GTK_KINETIC_SCROLLING_H__ */