[gtk: 8/15] kineticscrolling: Add stop function




commit 62808722d269b538809a5aabdd3341af2740a221
Author: José Expósito <jose exposito89 gmail com>
Date:   Tue Jun 22 18:44:05 2021 +0200

    kineticscrolling: Add stop function
    
    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        | 14 +++++++++++---
 gtk/gtkkineticscrollingprivate.h |  2 ++
 2 files changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkkineticscrolling.c b/gtk/gtkkineticscrolling.c
index 87618acd7c..4eab5dcc84 100644
--- a/gtk/gtkkineticscrolling.c
+++ b/gtk/gtkkineticscrolling.c
@@ -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;
+    }
+}
diff --git a/gtk/gtkkineticscrollingprivate.h b/gtk/gtkkineticscrollingprivate.h
index a531ace476..a519bd7ec0 100644
--- a/gtk/gtkkineticscrollingprivate.h
+++ b/gtk/gtkkineticscrollingprivate.h
@@ -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__ */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]