anchor.diff:  ;;; WINDOW STREAM
   
   ;; ???
  -(defclass window-stream (standard-extended-output-stream 
  +(defclass window-stream (standard-extended-output-stream
   			 standard-extended-input-stream)
     () )
   
  
positive.code:   )
  
  ;;???
  (defmethod change-space-requirements ((pane pane) &rest rest)
    (declare (ignore rest))
    (values))
  
  ;;???
  (defmethod note-space-requirements-changed (sheet (pane pane))
    (declare (ignore sheet))
    (setf (pane-space-requirement pane) nil)
    (compose-space pane)
    (if (or (top-level-sheet-pane-p pane) 
  	  (restraining-pane-p pane)
  	  (and (slot-value pane 'sr-width) 
  	       (slot-value pane 'sr-height)))
        (allocate-space pane (sr-width pane) (sr-height pane))
        (note-space-requirements-changed (sheet-parent pane) pane)))
  
negative.code:                   (space-requirement-width (compose-space (first (sheet-children pane))))
                    (space-requirement-height (compose-space (first (sheet-children pane))))))
  
  ;;;;
  ;;;; SCROLLER-PANE
  ;;;;
  
  ;;; How scrolling is done
  
  ;; The scroll-pane has a child window called the 'viewport', which
  ;; itself has the scrolled client pane as child. To scroll the client
  ;; pane is to move it [to possibly negative coordinates].
  ;;
  ;; So the viewport is just a kind of hole, where some part of the
  ;; scrolled window shows through.
  ;;
  
  ;;; How the scroll bars are set up
  
  ;; The scroll-bar's min/max values match the min/max arguments to
  ;; scroll-extent. The thumb-size is then calculated accordingly.
  
  ;; 
  
  (defparameter *scrollbar-thickness* 15)
  
  