anchor.diff:  (defclass gravity-topright (gravity) ())
   (defclass gravity-cursor (gravity) ())
   (defclass gravity-follow-cursor (gravity-cursor) ())
  +
  +(defclass popup-window (floating-window)
  +  ((gravity
  +    :initarg :gravity
  +    :reader popup-window-gravity)
  +   (source-window
  +    :initarg :source-window
  +    :reader popup-window-source-window)
  +   (base-width
  +    :initarg :base-width
  +    :reader popup-window-base-width)
  +   (base-height
  +    :initarg :base-height
  +    :reader popup-window-base-height))
  +  (:default-initargs
  +   :border +border-size+))
   
   (defun ensure-gravity (gravity)
     (if (typep gravity 'gravity)
  
positive.code:       (setf w (min width win-w)))
      (values x y w h)))
  
  (defclass popup-window (floating-window)
    ((gravity
      :initarg :gravity
      :reader popup-window-gravity)
     (source-window
      :initarg :source-window
      :reader popup-window-source-window)
     (base-width
      :initarg :base-width
      :reader popup-window-base-width)
     (base-height
      :initarg :base-height
      :reader popup-window-base-height))
    (:default-initargs
     :border +border-size+))
  
  (define-attribute popup-menu-attribute
    (t :foreground "white" :background "RoyalBlue"))
  (define-attribute non-focus-popup-menu-attribute
    (t :background "#444" :foreground "white"))
  
  (defmethod window-redraw ((popup-window popup-window) force)
    (adjust-for-redrawing (popup-window-gravity popup-window) popup-window)
    (call-next-method))
  
negative.code: (defvar *action-callback* nil)
  (defvar *focus-attribute* nil)
  (defvar *non-focus-attribute* nil)
  
  (define-attribute popup-menu-attribute
    (t :foreground "white" :background "RoyalBlue"))
  (define-attribute non-focus-popup-menu-attribute
    (t :background "#444" :foreground "white"))
  
  (defgeneric adjust-for-redrawing (gravity popup-window)
    (:method (gravity popup-window)))
  