gtkrange: Add scroll unit handling
authorpanoplie <59100-panoplie@users.noreply.gitlab.gnome.org>
Mon, 28 Feb 2022 20:45:06 +0000 (21:45 +0100)
committerpanoplie <59100-panoplie@users.noreply.gitlab.gnome.org>
Fri, 18 Mar 2022 23:41:26 +0000 (00:41 +0100)
gtk/gtkrange.c

index c3c270e6c313ea06d87556e658500d7b66dea595..f185ab6763856cbb0b1f35820e0efd8e488f1908 100644 (file)
@@ -2202,25 +2202,27 @@ gtk_range_scroll_controller_scroll (GtkEventControllerScroll *scroll,
                                     GtkRange                 *range)
 {
   GtkRangePrivate *priv = gtk_range_get_instance_private (range);
-  double scroll_unit, delta;
+  double delta;
   gboolean handled;
   GtkOrientation move_orientation;
-
-#ifdef GDK_WINDOWING_MACOS
-  scroll_unit = 1;
-#else
-  scroll_unit = gtk_adjustment_get_page_increment (priv->adjustment);
-#endif
+  GdkScrollUnit scroll_unit;
 
   if (priv->orientation == GTK_ORIENTATION_HORIZONTAL && dx != 0)
     {
       move_orientation = GTK_ORIENTATION_HORIZONTAL;
-      delta = dx * scroll_unit;
+      delta = dx;
     }
   else
     {
       move_orientation = GTK_ORIENTATION_VERTICAL;
-      delta = dy * scroll_unit;
+      delta = dy;
+    }
+
+  scroll_unit = gtk_event_controller_scroll_get_unit (scroll);
+
+  if (scroll_unit == GDK_SCROLL_UNIT_WHEEL)
+    {
+      delta *= gtk_adjustment_get_page_increment (priv->adjustment);
     }
 
   if (delta != 0 && should_invert_move (range, move_orientation))