anchor.diff:    (let ((callback (gadget-disarmed-callback gadget)))
       (when callback
         (funcall callback gadget))))
  +
  +
  +;; Client warning
  +
  +; Warning the gadget's client is useful (and made) when a changement has come
  +(defgeneric warn-client (gadget client))
  +
  +; Default methods does nothing
  +; Now, the default client of a gadget is its application-frame (here *application-frame*)
  +(defmethod warn-client (gadget (frame application-frame))
  +  (declare (ignorable gadget frame))
  +  (values))
  +
  +(defmethod warn-client (gadget (sheet sheet))
  +  (declare (ignorable gadget sheet))
  +  (values))
  +
  +; The moment to warn the client
  +; [Julien] I'm not sure about this moment, but it works well...
  +(defmethod handle-event :after ((gadget standard-gadget) (event pointer-button-press-event))
  +  (when (gadget-client gadget)
  +    (warn-client gadget (gadget-client gadget))))
   
   
   ;;;
  
positive.code: (defmethod (setf radio-box-current-selection) :before (button (pane radio-box-pane))
    (declare (ignore button))
    (let ((old-button (radio-box-current-selection pane)))
      (setf (gadget-value old-button :invoke-callback t) nil)))
  
  (defmethod (setf radio-box-current-selection) :after (button (pane radio-box-pane))
    (declare (ignorable pane))
    (setf (gadget-value button :invoke-callback t) t))
  
  (defmacro with-radio-box ( (&rest options) &body body)
    `(make-pane 'radio-box ,@options
  	      :current-selection (first ,body)
  	      ,@body))
  
  
  ;;
  
negative.code:        :initform (gensym "GADGET")
         :accessor gadget-id)
     (client :initarg :client
             :initform *application-frame*
             :accessor gadget-client)
     (armed-callback :initarg :armed-callback
                     :initform nil
  