anchor.diff:              (document-drag-n-drop translator nil
                                     context-type frame event window
                                     x y))
  -          ;; XXX only support finish-on-release for now.
  -          #-(and)(:presentation-button-press ())
  +          (:presentation-button-press (&key presentation event)
  +            (unless finish-on-release
  +              (setq destination-presentation presentation
  +                    last-event event)
  +              (return-from do-tracking nil)))
  +          (:pointer-button-press ()
  +            (unless finish-on-release
  +              (setq last-event event)
  +              (return-from do-tracking nil)))
             (:presentation-button-release (&key presentation event)
  -            (setq destination-presentation presentation
  -                  last-event event)
  -            (return-from do-tracking nil))
  -          #-(and)(:button-press ())
  +            (when finish-on-release
  +              (setq destination-presentation presentation
  +                    last-event event)
  +              (return-from do-tracking nil)))
             (:pointer-button-release (&key event)
  -            (setq last-event event)
  -            (return-from do-tracking nil))))
  +            (when finish-on-release
  +              (setq last-event event)
  +              (return-from do-tracking nil)))))
         (erase-old)
         (when-let ((stream *pointer-documentation-output*))
           (window-clear stream))
  
positive.code: (defvar *dragged-object* nil
    "Bound to the object dragged in a drag-and-drop context")
  
  (defclass drag-n-drop-translator (presentation-translator)
    ((destination-type :reader destination-type :initarg :destination-type)
     (feedback :reader feedback :initarg :feedback)
     (highlighting :reader highlighting :initarg :highlighting)
     (destination-translator :reader destination-translator
                             :initarg :destination-translator)))
  
  ;;; According to the Franz User's guide, the destination object is
  ;;; available in the tester, documentation, and translator function
  
negative.code:                      (menu t)
                       (priority 0)
                       (feedback 'frame-drag-and-drop-feedback)
                       (highlighting 'frame-drag-and-drop-highlighting)
                       (finish-on-release *finish-on-release*))
       arglist &body body)
    (declare (ignore tester gesture documentation pointer-documentation
                     menu priority finish-on-release))
    (let* ((real-dest-type (expand-presentation-type-abbreviation destination-type))
           (name-string (command-name-from-symbol name))
           (drag-string (format nil "Drag to ~A" name-string))
           (pointer-doc (if pointer-doc-p
  