anchor.diff:    ;; When an `accept' is called during the execution of a command for
     ;; the Drei gadget, we must deactivate the gadget in order to not
     ;; eat keyboard events.
  -  (unwind-protect (progn (deactivate-gadget drei)
  +  (unwind-protect (progn (disarmed-callback drei t t)
                            (funcall continuation))
       (activate-gadget drei)
  -    (setf (active drei) t)))
  +    (armed-callback drei t t)))
   
   (defmethod additional-command-tables append ((drei drei-gadget-pane)
                                                (table drei-command-table))
  
positive.code:                                       climi::enter/exit-arms/disarms-mixin
                                        asynchronous-command-processor)
    ((%currently-processing :initform nil
                            :accessor currently-processing-p))
    (:default-initargs :command-executor 'execute-drei-command)
    (:documentation "An actual, instantiable Drei gadget with
   event-based command processing."))
  
negative.code:                             (gadget-id gadget)
                              new-value)))
  
  ;; It's really silly that we have to manage keyboard input focus
  ;; ourself.
  (defmethod armed-callback :after ((gadget drei-gadget-pane) client id)
    (declare (ignore client id))
    (let ((port (port gadget)))
      (setf (previous-focus gadget) (port-keyboard-input-focus port))
      (setf (port-keyboard-input-focus port) gadget))
    (setf (active gadget) t)
    (display-drei gadget))
  
  (defmethod disarmed-callback :after ((gadget drei-gadget-pane) client id)
    (declare (ignore client id))
    (let ((port (port gadget)))
      (setf (port-keyboard-input-focus port) (previous-focus gadget))
      (setf (previous-focus gadget) nil))
    (setf (active gadget) nil)
    (display-drei gadget))
  
  