From: Carlos Garnacho Date: Tue, 15 Mar 2022 21:41:27 +0000 (+0100) Subject: gtkscrolledwindow: Do not trigger kinetic helpers on 0 velocity X-Git-Tag: archive/raspbian/4.8.3+ds-2+rpi1~3^2~20^2~4^2~296^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=65839f67f8b69e6bffe3cfe9940041d3a1836cf1;p=gtk4.git gtkscrolledwindow: Do not trigger kinetic helpers on 0 velocity Doing this is pointless, so it could be skipped. --- 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);