summaryrefslogtreecommitdiff
path: root/lisp/dired.el
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-03-26 10:15:53 +0800
committerPo Lu <luangruo@yahoo.com>2022-03-26 10:15:53 +0800
commit5359062be603e22d1ee07c21b0840fdb98a704a3 (patch)
treef278bf1a27d04b21d19703d2995478c565db76ad /lisp/dired.el
parent21ecf6b24d0549a9f27bcab51dbd8c8b1a37ef86 (diff)
downloademacs-5359062be603e22d1ee07c21b0840fdb98a704a3.tar.gz
emacs-5359062be603e22d1ee07c21b0840fdb98a704a3.tar.bz2
emacs-5359062be603e22d1ee07c21b0840fdb98a704a3.zip
Avoid ClientMessage overhead when dragging stuff to other frames
* lisp/dired.el (dired-mouse-drag): Handle correctly dragging from dired buffers in nonselected windows. * lisp/x-dnd.el (x-dnd-handle-drag-n-drop-event): Understand new client message type. * src/xterm.c (x_dnd_send_enter, x_dnd_send_position) (x_dnd_send_leave): Ignore if window is the top window of a frame. (x_dnd_send_drop): Send special DND event in that case.
Diffstat (limited to 'lisp/dired.el')
-rw-r--r--lisp/dired.el7
1 files changed, 5 insertions, 2 deletions
diff --git a/lisp/dired.el b/lisp/dired.el
index c5e389c9ce1..3c37a887baf 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1704,7 +1704,8 @@ see `dired-use-ls-dired' for more details.")
(when mark-active
(deactivate-mark))
(save-excursion
- (goto-char (posn-point (event-end event)))
+ (with-selected-window (posn-window (event-end event))
+ (goto-char (posn-point (event-end event))))
(track-mouse
(let ((new-event (read-event)))
(if (not (eq (event-basic-type new-event) 'mouse-movement))
@@ -1715,7 +1716,9 @@ see `dired-use-ls-dired' for more details.")
(condition-case nil
(progn
(gui-backend-set-selection 'XdndSelection
- (dired-file-name-at-point))
+ (with-selected-window (posn-window
+ (event-end event))
+ (dired-file-name-at-point)))
(x-begin-drag '("text/uri-list"
"text/x-dnd-username")
(if (eq 'dired-mouse-drag-files 'link)