[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master ec6f6d23eb: Fix XDND from Firefox again
From: |
Po Lu |
Subject: |
master ec6f6d23eb: Fix XDND from Firefox again |
Date: |
Sun, 19 Jun 2022 00:22:26 -0400 (EDT) |
branch: master
commit ec6f6d23eb37ebd4fad17eb02730bf463aa27c5a
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Fix XDND from Firefox again
* lisp/x-dnd.el (x-dnd-handle-xdnd): Prevent nil from appearing
in format 32 list.
(x-dnd-handle-motif): Send reply if the user quit out of the
drop handler as well.
---
lisp/x-dnd.el | 75 +++++++++++++++++++++++++++++++----------------------------
1 file changed, 39 insertions(+), 36 deletions(-)
diff --git a/lisp/x-dnd.el b/lisp/x-dnd.el
index d4aa68a10d..22277033f5 100644
--- a/lisp/x-dnd.el
+++ b/lisp/x-dnd.el
@@ -636,24 +636,26 @@ FORMAT is 32 (not used). MESSAGE is the data part of an
XClientMessageEvent."
timestamp)))
success action)
(x-display-set-last-user-time timestamp)
- (setq action (if value
- (condition-case info
- (x-dnd-drop-data event frame window value
- (x-dnd-current-type window))
- (error
- (message "Error: %s" info)
- nil))))
- (setq success (if action 1 0))
- (when (>= version 2)
- (x-send-client-message
- frame dnd-source frame "XdndFinished" 32
- (list (string-to-number
- (frame-parameter frame 'outer-window-id))
- (if (>= version 5) success 0) ;; 1 = Success, 0 = Error
- (when (>= version 5)
- (if (not success) 0
- (car (rassoc action
- x-dnd-xdnd-to-action)))))))
+ (unwind-protect
+ (setq action (if value
+ (condition-case info
+ (x-dnd-drop-data
+ event frame window value
+ (x-dnd-current-type window))
+ (error
+ (message "Error: %s" info)
+ nil))))
+ (setq success (if action 1 0))
+ (when (>= version 2)
+ (x-send-client-message
+ frame dnd-source frame "XdndFinished" 32
+ (list (string-to-number
+ (frame-parameter frame 'outer-window-id))
+ (if (>= version 5) success 0) ;; 1 = Success, 0 = Error
+ (if (or (not success) (< version 5)) 0
+ (or (car (rassoc action
+ x-dnd-xdnd-to-action))
+ 0))))))
(x-dnd-forget-drop window)))
(t (error "Unknown XDND message %s %s" message data))))
@@ -981,24 +983,25 @@ Return a vector of atoms containing the selection
targets."
"_MOTIF_DRAG_AND_DROP_MESSAGE"
8
reply)
- (setq action
- (when (and reply-action atom-name)
- (let* ((value (x-get-selection-internal
- (intern atom-name)
- (intern (x-dnd-current-type window))
- timestamp)))
- (when value
- (condition-case info
- (x-dnd-drop-data event frame window value
- (x-dnd-current-type window))
- (error
- (message "Error: %s" info)
- nil))))))
- (x-get-selection-internal
- (intern atom-name)
- (if action 'XmTRANSFER_SUCCESS 'XmTRANSFER_FAILURE)
- timestamp)
- (x-dnd-forget-drop frame))))
+ (unwind-protect
+ (setq action
+ (when (and reply-action atom-name)
+ (let* ((value (x-get-selection-internal
+ (intern atom-name)
+ (intern (x-dnd-current-type window))
+ timestamp)))
+ (when value
+ (condition-case info
+ (x-dnd-drop-data event frame window value
+ (x-dnd-current-type
window))
+ (error
+ (message "Error: %s" info)
+ nil))))))
+ (x-get-selection-internal
+ (intern atom-name)
+ (if action 'XmTRANSFER_SUCCESS 'XmTRANSFER_FAILURE)
+ timestamp)
+ (x-dnd-forget-drop frame)))))
(t (message "Unknown Motif drag-and-drop message: %s"
(logand (aref data 0) #x3f)))))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master ec6f6d23eb: Fix XDND from Firefox again,
Po Lu <=