summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2022-03-15 22:42:13 +0100
committerCarlos Garnacho <carlosg@gnome.org>2022-03-19 12:35:11 +0100
commitf7d9ede82dca41241902d86e5ee7d1997c02f4a2 (patch)
tree96d285946cb5862b0852f08c881fd32495adb651
parent65839f67f8b69e6bffe3cfe9940041d3a1836cf1 (diff)
downloadgtk+-f7d9ede82dca41241902d86e5ee7d1997c02f4a2.tar.gz
gtkkineticscrolling: Do not take distance based shortcuts
The pixel distance could be small enough between tick() calls that this kind of checks might potentially become a problem. Rely only on the calculated velocity to trigger the STOPPED phase, and use a lower threshold to avoid cutting the animation too early. Related: https://gitlab.gnome.org/GNOME/gtk/-/issues/4725
-rw-r--r--gtk/gtkkineticscrolling.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/gtk/gtkkineticscrolling.c b/gtk/gtkkineticscrolling.c
index 8c697d54cd..1f02fe7993 100644
--- a/gtk/gtkkineticscrolling.c
+++ b/gtk/gtkkineticscrolling.c
@@ -181,8 +181,6 @@ gtk_kinetic_scrolling_tick (GtkKineticScrolling *data,
{
case GTK_KINETIC_SCROLLING_PHASE_DECELERATING:
{
- double last_position = data->position;
- double last_time = data->t;
double exp_part;
data->t += time_delta;
@@ -199,8 +197,7 @@ gtk_kinetic_scrolling_tick (GtkKineticScrolling *data,
{
gtk_kinetic_scrolling_init_overshoot(data, data->upper, data->position, data->velocity);
}
- else if (fabs(data->velocity) < 1 ||
- (last_time != 0.0 && fabs(data->position - last_position) < 1))
+ else if (fabs(data->velocity) < 0.1)
{
gtk_kinetic_scrolling_stop (data);
}