summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Expósito <jose.exposito89@gmail.com>2021-06-22 18:44:05 +0200
committerCarlos Garnacho <carlosg@gnome.org>2022-01-26 22:49:53 +0100
commit62808722d269b538809a5aabdd3341af2740a221 (patch)
tree28b000688c0ceda23fd13ef5e373c8d3ed0257f1
parentf09338c8ded26ecb620937b4a10e59614460a065 (diff)
downloadgtk+-62808722d269b538809a5aabdd3341af2740a221.tar.gz
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>
-rw-r--r--gtk/gtkkineticscrolling.c14
-rw-r--r--gtk/gtkkineticscrollingprivate.h2
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__ */