anchor.diff:                  (unless override-redirect-p
                     (focus (add-window window))))
                  (:destroy-notify
  -                (window)
  -                (setf *windows* (rrem window *windows* :test #'window-equal))
  -                (when (win= window *last*) (setf *last* nil)))))
  +                (event-window window)
  +                (unless (window-equal event-window window)
  +                  (setf *windows* (rrem window *windows* :test #'window-equal))
  +                  (when (win= window *last*)
  +                    (setf *last* (when (listp *last*)
  +                                   (rrem window *last* :test #'window-equal))))))))
         (ungrab-button *root* (code move) :modifiers (state move))
         (ungrab-button *root* (code resize) :modifiers (state resize))
  +      (ungrab-button *root* (code close) :modifiers (state close))
         (ungrab-key *root* (code prefix) :modifiers (state prefix))
         (close-display *display*))))
   
  
positive.code: (defun focus-1 (window)
    (when (eql (window-map-state window) :viewable)
      (setf (window-priority window) :above)
      (set-input-focus *display* window :pointer-root)
      (display-finish-output *display*)))
  
  (defun focus (window)
    (setf *last* (have-focus))
    (if (listp window)
        (dolist (w window) (focus-1 w))
        (focus-1 window)))
  
  (defun win= (a b)
    (cond ((and (window-p a) (window-p b))
  
negative.code:     `(let ((,sc (compile-shortcut ',key)))
         (pushnew (cons ,sc #'(lambda () ,@body)) *shortcuts* :test #'equal :key #'car))))
  
  (defun has-focus ()
    "Return a window (or list of) where the focus is."
    (let ((w (input-focus *display*)))
      (find w *windows* :test #'win=)))
  