anchor.diff:  (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))
  +   (pressed :accessor gui-button-pressed :initform nil)
  +   (pressed-texture :accessor gui-button-pressed-texture :initform nil
  +                    :initarg :pressed-texture))
     (:default-initargs
       :color (create-color 1 1 1)
       :texture (create-texture-from-file "button.png"
  
positive.code: 
  (defun update-gui (&optional (width *display-width*)
                               (height *display-height*))
    (update-2d-view *gui-view* 0 0 width height))
  
  (defun create-widget (widget-type parent-widget &rest initargs)
    (let ((created-widget (apply 'make-instance widget-type initargs)))
  
negative.code: ;;       (funcall (action it) it)))
  
  (defmethod gui-widget-mouse-down ((it gui-button))
    (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)
    (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)
  