summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2022-03-15 22:41:27 +0100
committerCarlos Garnacho <carlosg@gnome.org>2022-03-19 12:35:11 +0100
commit65839f67f8b69e6bffe3cfe9940041d3a1836cf1 (patch)
treefa39bb2d06b7fe0b332ac12fd69d6270c0ee93ee
parentdf40db137b8d881605ef7a487ea6ff4fda7d1bde (diff)
downloadgtk+-65839f67f8b69e6bffe3cfe9940041d3a1836cf1.tar.gz
gtkscrolledwindow: Do not trigger kinetic helpers on 0 velocity
Doing this is pointless, so it could be skipped.
-rw-r--r--gtk/gtkscrolledwindow.c54
1 files changed, 30 insertions, 24 deletions
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 227e3e2741..db76dae551 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -3371,18 +3371,21 @@ gtk_scrolled_window_start_deceleration (GtkScrolledWindow *scrolled_window)
gtk_scrolled_window_accumulate_velocity (&priv->hscrolling, elapsed, &priv->x_velocity);
g_clear_pointer (&priv->hscrolling, gtk_kinetic_scrolling_free);
- hadjustment = gtk_scrollbar_get_adjustment (GTK_SCROLLBAR (priv->hscrollbar));
- lower = gtk_adjustment_get_lower (hadjustment);
- upper = gtk_adjustment_get_upper (hadjustment);
- upper -= gtk_adjustment_get_page_size (hadjustment);
- priv->hscrolling =
- gtk_kinetic_scrolling_new (lower,
- upper,
- MAX_OVERSHOOT_DISTANCE,
- DECELERATION_FRICTION,
- OVERSHOOT_FRICTION,
- priv->unclamped_hadj_value,
- priv->x_velocity);
+ if (priv->x_velocity != 0)
+ {
+ hadjustment = gtk_scrollbar_get_adjustment (GTK_SCROLLBAR (priv->hscrollbar));
+ lower = gtk_adjustment_get_lower (hadjustment);
+ upper = gtk_adjustment_get_upper (hadjustment);
+ upper -= gtk_adjustment_get_page_size (hadjustment);
+ priv->hscrolling =
+ gtk_kinetic_scrolling_new (lower,
+ upper,
+ MAX_OVERSHOOT_DISTANCE,
+ DECELERATION_FRICTION,
+ OVERSHOOT_FRICTION,
+ priv->unclamped_hadj_value,
+ priv->x_velocity);
+ }
}
else
g_clear_pointer (&priv->hscrolling, gtk_kinetic_scrolling_free);
@@ -3395,18 +3398,21 @@ gtk_scrolled_window_start_deceleration (GtkScrolledWindow *scrolled_window)
gtk_scrolled_window_accumulate_velocity (&priv->vscrolling, elapsed, &priv->y_velocity);
g_clear_pointer (&priv->vscrolling, gtk_kinetic_scrolling_free);
- vadjustment = gtk_scrollbar_get_adjustment (GTK_SCROLLBAR (priv->vscrollbar));
- lower = gtk_adjustment_get_lower(vadjustment);
- upper = gtk_adjustment_get_upper(vadjustment);
- upper -= gtk_adjustment_get_page_size(vadjustment);
- priv->vscrolling =
- gtk_kinetic_scrolling_new (lower,
- upper,
- MAX_OVERSHOOT_DISTANCE,
- DECELERATION_FRICTION,
- OVERSHOOT_FRICTION,
- priv->unclamped_vadj_value,
- priv->y_velocity);
+ if (priv->y_velocity != 0)
+ {
+ vadjustment = gtk_scrollbar_get_adjustment (GTK_SCROLLBAR (priv->vscrollbar));
+ lower = gtk_adjustment_get_lower(vadjustment);
+ upper = gtk_adjustment_get_upper(vadjustment);
+ upper -= gtk_adjustment_get_page_size(vadjustment);
+ priv->vscrolling =
+ gtk_kinetic_scrolling_new (lower,
+ upper,
+ MAX_OVERSHOOT_DISTANCE,
+ DECELERATION_FRICTION,
+ OVERSHOOT_FRICTION,
+ priv->unclamped_vadj_value,
+ priv->y_velocity);
+ }
}
else
g_clear_pointer (&priv->vscrolling, gtk_kinetic_scrolling_free);