anchor.diff:  ;;       (funcall (action it) it)))
   
   (defmethod gui-widget-mouse-down ((it gui-button))
  -  (setf (gui-button-pressed it) t))
  +  (setf (gui-button-pressed it) t)
  +  (when (gui-button-pressed-texture it)
  +    (let ((tex (gui-widget-texture it)))
  +      (setf (gui-widget-texture it) (gui-button-pressed-texture it))
  +      (setf (gui-button-pressed-texture it) tex))))
   
   (defmethod gui-widget-mouse-up ((it gui-button))
     (when (and (gui-button-pressed it) (action it))
       (funcall (action it) it))
  -  (setf (gui-button-pressed it) nil))
  +  (setf (gui-button-pressed it) nil)
  +  (when (gui-button-pressed-texture it)
  +    (let ((tex (gui-widget-texture it)))
  +      (setf (gui-widget-texture it) (gui-button-pressed-texture it))
  +      (setf (gui-button-pressed-texture it) tex))))
   
   (defmethod show ((w gui-button))
     (add-input-handler w)
  
positive.code: (defclass gui-button (gui-widget)
    ((text :accessor text :initform '() :initarg :text)
     (action :accessor action :initform nil :initarg :action)
     (pressed :accessor gui-button-pressed :initform nil))
    (:default-initargs
      :color (create-color 1 1 1)
      :texture (create-texture-from-file "button.png"
  
negative.code: 
  (defun update-gui (&optional (width *display-width*)
                               (height *display-height*))
    (update-2d-view *gui-view* 0 0 width height)
    (dolist (w (gui-widgets *gui*))
      (format t "Updatin layout of ~S~%" w)
      (apply-layout w)))
  
  (defun create-widget (widget-type parent-widget &rest initargs)
    (let ((created-widget (apply 'make-instance widget-type initargs)))
  