[gimp] libgimpwidgets: allow NULL adjustments in gimp_scroll_adjustment_values()



commit 2f425f0e2a798efe166f2056f05a5494650a5f63
Author: Michael Natterer <mitch gimp org>
Date:   Mon May 28 22:27:24 2018 +0200

    libgimpwidgets: allow NULL adjustments in gimp_scroll_adjustment_values()

 libgimpwidgets/gimpscrolledpreview.c | 39 ++++++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 15 deletions(-)
---
diff --git a/libgimpwidgets/gimpscrolledpreview.c b/libgimpwidgets/gimpscrolledpreview.c
index 9f9c62c16b..2b801ad58d 100644
--- a/libgimpwidgets/gimpscrolledpreview.c
+++ b/libgimpwidgets/gimpscrolledpreview.c
@@ -951,8 +951,8 @@ gimp_scroll_adjustment_values (GdkEventScroll *sevent,
   gdouble        value_y = 0.0;
 
   g_return_if_fail (sevent != NULL);
-  g_return_if_fail (GTK_IS_ADJUSTMENT (hadj));
-  g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));
+  g_return_if_fail (hadj == NULL || GTK_IS_ADJUSTMENT (hadj));
+  g_return_if_fail (vadj == NULL || GTK_IS_ADJUSTMENT (vadj));
 
   if (sevent->state & GDK_SHIFT_MASK)
     {
@@ -965,8 +965,15 @@ gimp_scroll_adjustment_values (GdkEventScroll *sevent,
       adj_y = vadj;
     }
 
-  scroll_unit_x = pow (gtk_adjustment_get_page_size (adj_x), 2.0 / 3.0);
-  scroll_unit_y = pow (gtk_adjustment_get_page_size (adj_y), 2.0 / 3.0);
+  if (adj_x)
+    scroll_unit_x = pow (gtk_adjustment_get_page_size (adj_x), 2.0 / 3.0);
+  else
+    scroll_unit_x = 1.0;
+
+  if (adj_y)
+    scroll_unit_y = pow (gtk_adjustment_get_page_size (adj_y), 2.0 / 3.0);
+  else
+    scroll_unit_y = 1.0;
 
   switch (sevent->direction)
     {
@@ -992,17 +999,19 @@ gimp_scroll_adjustment_values (GdkEventScroll *sevent,
       value_y *= scroll_unit_y;
     }
 
-  value_x = CLAMP (value_x +
-                   gtk_adjustment_get_value (adj_x),
-                   gtk_adjustment_get_lower (adj_x),
-                   gtk_adjustment_get_upper (adj_x) -
-                   gtk_adjustment_get_page_size (adj_x));
-
-  value_y = CLAMP (value_y +
-                   gtk_adjustment_get_value (adj_y),
-                   gtk_adjustment_get_lower (adj_y),
-                   gtk_adjustment_get_upper (adj_y) -
-                   gtk_adjustment_get_page_size (adj_y));
+  if (adj_x)
+    value_x = CLAMP (value_x +
+                     gtk_adjustment_get_value (adj_x),
+                     gtk_adjustment_get_lower (adj_x),
+                     gtk_adjustment_get_upper (adj_x) -
+                     gtk_adjustment_get_page_size (adj_x));
+
+  if (adj_y)
+    value_y = CLAMP (value_y +
+                     gtk_adjustment_get_value (adj_y),
+                     gtk_adjustment_get_lower (adj_y),
+                     gtk_adjustment_get_upper (adj_y) -
+                     gtk_adjustment_get_page_size (adj_y));
 
   if (sevent->state & GDK_SHIFT_MASK)
     {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]