From 8d66e7eaa131f868c8a41826e5ed3a9fbcf91083 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Wed, 13 Jun 2018 15:20:21 +0200 Subject: [PATCH] libgimpwidgets: improve gimp_scroll_adjustment_values() so it works for very small adjustment page sizes. Same as GTK+ commit c0ba041c73214f82d2c32b2ca1fa8f3c388c6170 --- libgimpwidgets/gimpscrolledpreview.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libgimpwidgets/gimpscrolledpreview.c b/libgimpwidgets/gimpscrolledpreview.c index 2b801ad58d..da9f648269 100644 --- a/libgimpwidgets/gimpscrolledpreview.c +++ b/libgimpwidgets/gimpscrolledpreview.c @@ -966,12 +966,22 @@ gimp_scroll_adjustment_values (GdkEventScroll *sevent, } if (adj_x) - scroll_unit_x = pow (gtk_adjustment_get_page_size (adj_x), 2.0 / 3.0); + { + gdouble page_size = gtk_adjustment_get_page_size (adj_x); + gdouble pow_unit = pow (page_size, 2.0 / 3.0); + + scroll_unit_x = MIN (page_size / 2.0, pow_unit); + } else scroll_unit_x = 1.0; if (adj_y) - scroll_unit_y = pow (gtk_adjustment_get_page_size (adj_y), 2.0 / 3.0); + { + gdouble page_size = gtk_adjustment_get_page_size (adj_y); + gdouble pow_unit = pow (page_size, 2.0 / 3.0); + + scroll_unit_y = MIN (page_size / 2.0, pow_unit); + } else scroll_unit_y = 1.0;