anchor.diff:        (case event-state
           (:dragging
            (let* ((y-new-thumb-top (- y drag-dy))
  -                (ts (* 1/3 (- (gadget-max-value sb) (gadget-min-value sb))))
  +                (ts (scroll-bar-thumb-size sb))
                   (new-value (translate-range-value y-new-thumb-top
                                                     (bounding-rectangle-min-y (scroll-bar-thumb-bed-region sb))
                                                     (bounding-rectangle-max-y (scroll-bar-thumb-bed-region sb))
  
positive.code: 
  ;;; Scroll-bar's sub-regions
  
  (defmethod scroll-bar-up-region ((sb scroll-bar-pane))
    (with-bounding-rectangle* (minx miny maxx maxy) (transform-region (scroll-bar-transformation sb)
                                                                      (pane-inner-region sb))
  
negative.code:   (with-bounding-rectangle* (x1 y1 x2 y2) (scroll-bar-thumb-bed-region sb)
      (multiple-value-bind (minv maxv) (gadget-range* sb)
        (multiple-value-bind (v) (gadget-value sb)
          (let ((ts (scroll-bar-thumb-size sb)))
            (let ((ya (translate-range-value v minv (+ maxv ts) y1 y2))
                  (yb (translate-range-value (+ v ts) minv (+ maxv ts) y1 y2)))
              (make-rectangle* x1 ya x2 yb)))))))
  