anchor.diff:    (f (+ (or child-height (style :row-height)) (style :row-padding))))
   
   
  -(defclass vertical-layout (layout) ())
  -
  -
  -(defmethod adopt ((this vertical-layout) child)
  -  (call-next-method this (make-instance 'panel :content child)))
  +(defclass vertical-layout (expandable panel layout) ())
   
   
   (defmethod calc-bounds ((this vertical-layout))
  
positive.code: (cl:in-package :cl-bodge.ui)
  
  
  (declaim (special *window*
                    *layout*))
  
  
  (defgeneric compose (element))
  
negative.code: ;;;
  ;;;
  ;;;
  (defclass horizontal-layout (expandable panel layout) ())
  
  
  (defmethod calc-bounds ((this horizontal-layout))
    (let (width height width-undefined)
      (dochildren (child this)
        (multiple-value-bind (child-width child-height) (calc-bounds child)
          ;; if at least one child has undefined width
          ;; make the whole container width undefined
          (unless width-undefined
            (if child-width
                (setf width (if width
                                (+ width child-width)
                                child-width))
                (setf width nil
                      width-undefined t)))
          (when child-height
            (setf height (if height
                            (max height child-height)
  