diff --git a/lisp/x-dnd.el b/lisp/x-dnd.el index 4b23665bca2..88a39ea679e 100644 --- a/lisp/x-dnd.el +++ b/lisp/x-dnd.el @@ -308,13 +308,16 @@ nil if not." (w (posn-window (event-start event)))) (when handler (if (and (windowp w) (window-live-p w) - (not (minibufferp (window-buffer w)))) - ;; If dropping in a window, open files in that window rather - ;; than in a new widow. + (not (window-minibuffer-p w)) + (not (window-dedicated-p w))) + ;; If dropping in an ordinary window which we could use, + ;; let dnd-open-file-other-window specify what to do. (progn (goto-char (posn-point (event-start event))) (funcall handler window action data)) - (let ((dnd-open-file-other-window t)) ;; Dropping on non-window. + ;; If we can't display the file here, + ;; make a new window for it. + (let ((dnd-open-file-other-window t)) (select-frame frame) (funcall handler window action data))))))