Range: Fix hilight not drawn to value if page-size
authorDaniel Boles <dboles.src@gmail.com>
Sun, 23 Jul 2023 10:11:40 +0000 (11:11 +0100)
committerDaniel Boles <dboles.src@gmail.com>
Sun, 23 Jul 2023 10:11:40 +0000 (11:11 +0100)
If we have a non-zero Adjustment:page-size, the actual amount we draw is
reduced by that page-size. We account for this in various places, but we
did not when deciding how far to allocate the highlight widget, so we
were drawing the highlight not far enough, falling short of the value.
This fixes by subtracting the page-size from the drawn range here too.

Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5976

gtk/gtkrange.c

index fbf750f6963b2cb13577c79b5db510bd4b6abf02..51b46c23437da54358d657001e64c0ac467f82c0 100644 (file)
@@ -1455,18 +1455,17 @@ gtk_range_allocate_trough (GtkGizmo *gizmo,
   if (lower == upper)
     value = 0;
   else
-    value = (gtk_adjustment_get_value (priv->adjustment) - lower) / (upper - lower);
+    value = (gtk_adjustment_get_value (priv->adjustment) - lower) /
+            (upper - page_size - lower);
 
   if (priv->show_fill_level &&
       upper - page_size - lower != 0)
     {
       double level, fill;
       GtkAllocation fill_alloc;
-
       fill_alloc = (GtkAllocation) {0, 0, width, height};
 
       level = CLAMP (priv->fill_level, lower, upper - page_size);
-
       fill = (level - lower) / (upper - lower - page_size);
 
       if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)