anchor.diff:      (send mirror :set-target mirror)
       ;; Also need to specify when an action is sent (i.e. which actions
       ;; result in an action being posted)
  -    (send mirror :send-action-on action-mask)
  +;;;    (send mirror :send-action-on action-mask)
  +    (send mirror :send-action-on #$NSScrollWheelMask)
       ;; We want continuous actions when we can get them...
       (send mirror :set-continuous #$YES)
  -    (send mirror :set-action (ccl::@selector "takeAction:"))
  +    (send mirror :set-action (ccl::@selector "takeScrollerAction:"))
   
       (setf (view-event-mask mirror) +ignores-events+)
       (port-register-mirror (port sheet) sheet mirror)
  
positive.code: 	  :knob-proportion (coerce loz-size 'short-float))))
  
  (defun action-handler (pane sender)
    (format *trace-output* "Got action to handle of ~a on pane ~a~%" sender pane)
    ;; Now we need to decide exactly what we do with these events... not sure
    ;; if this is the right way to invoke the callbacks... shouldn't
    ;; '(scroll-bar-scroll-up-line-callback sb)' come into it somewhere? Hmmm.
  
    ;; Note: because the coords are all over the place, to make these work nicely
    ;; with non-aqua panes, we reverse the 'up' and 'down' actions. I'm not
    ;; convinced this is actually a good idea, but until flipped coords are gone,
    ;; it'll have to do (how a full NSScrollView would work might be interesting).
  
    (let ((hit-part (send sender 'hit-part)))
      (cond ((eq hit-part #$NSScrollerKnob)   ; drag knob
  	   (format *trace-output* "Action was NSScrollerKnob~%")
  	   ;; Invoke '(drag-callback bar client id value)'
  	   )
  	  ((eq hit-part #$NSScrollerKnobSlot)   ; click on knob (or alt-click on slot)
  	   (format *trace-output* "Action was NSScrollerKnobSlot~%")
  	   ;; Invoke '(drag-callback bar client id value)'
  	   )
  	  ((eq hit-part #$NSScrollerDecrementLine)
  	   (format *trace-output* "Action was NSScrollerDecrementLine~%")
  	   (clim:scroll-down-line-callback pane (gadget-client pane) (gadget-id pane)))
  	  ((eq hit-part #$NSScrollerDecrementPage)
  	   (format *trace-output* "Action was NSScrollerDecrementPage~%")
  	   (clim:scroll-down-page-callback pane (gadget-client pane) (gadget-id pane)))
  	  ((eq hit-part #$NSScrollerIncrementLine)
  	   (format *trace-output* "Action was NSScrollerIncrementLine~%")
  	   (clim:scroll-up-line-callback pane (gadget-client pane) (gadget-id pane)))
  	  ((eq hit-part #$NSScrollerIncrementPage)
  	   (format *trace-output* "Action was NSScrollerIncrementPage~%")
  	   (clim:scroll-up-page-callback pane (gadget-client pane) (gadget-id pane)))
  	  ((eq hit-part #$NSScrollerNoPart)
  	   (format *trace-output* "Action was NSScrollerNoPart~%"))
  	  (t (format *trace-output* "Unknown action~%"))))
  
    )
  
  
negative.code: 
  ;;; No need to update the scrollbar (most of the time) since Cocoa will move
  ;;; the 'thumb' appropriately. Stick some debug in to see when it's invoked.
  ;;; => As expected, this is invoked all the time.
  
  ;;; I believe it's safe to leave this alone though since the sb will only be
  ;;; redrawn once through the event loop it shouldn't be too inefficient to
  ;;; be changing its value regularly.
  (defmethod (setf gadget-value) :before (value (gadget beagle-scroll-bar-pane)
  					      &key invoke-callback)
    (declare (ignore invoke-callback))
  