diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2022-03-15 22:41:27 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2022-03-19 12:35:11 +0100 |
commit | 65839f67f8b69e6bffe3cfe9940041d3a1836cf1 (patch) | |
tree | fa39bb2d06b7fe0b332ac12fd69d6270c0ee93ee | |
parent | df40db137b8d881605ef7a487ea6ff4fda7d1bde (diff) | |
download | gtk+-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.c | 54 |
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); |