diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2022-03-15 22:42:13 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2022-03-19 12:35:11 +0100 |
commit | f7d9ede82dca41241902d86e5ee7d1997c02f4a2 (patch) | |
tree | 96d285946cb5862b0852f08c881fd32495adb651 | |
parent | 65839f67f8b69e6bffe3cfe9940041d3a1836cf1 (diff) | |
download | gtk+-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.c | 5 |
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); } |