anchor.diff:  
   ;;; Scroll-bar's sub-regions
   
  +(defmethod scroll-bar-thumb-size ((sb scroll-bar-pane))
  +  "Return the size of the scrollbar's thumb."
  +  (multiple-value-bind (minv maxv) (gadget-range* sb)
  +    (max 1/100000                         ;hack to cope with GADGET-RANGE* being empty
  +         (* 1/3 (- maxv minv)))))
  +
   (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))
  
positive.code:       (case event-state
          (:dragging
           (let* ((y-new-thumb-top (- y drag-dy))
                  (ts (* 1/3 (- (gadget-max-value sb) (gadget-min-value 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))
  
negative.code:    (scroll-up-page-callback :initarg :scroll-up-page-callback
                              :initform nil
                              :reader scroll-bar-scroll-up-page-callback)
  
     #||
     (thumb-size :initarg :thumb-size :initform 1/4
                 :reader scroll-bar-thumb-size)
     ||#
     ))
  
  (defmethod drag-callback ((pane scroll-bar) client gadget-id value)
    (declare (ignore client gadget-id))
  