diff options
author | Po Lu <luangruo@yahoo.com> | 2023-05-03 20:02:01 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2023-05-03 20:02:01 +0800 |
commit | 8d5aa8df4ad268c253712efe9ca3b3b158d19433 (patch) | |
tree | 6b2d86a0d921f889279cf98a52a6db6930270169 /lisp/select.el | |
parent | 57562c3fd0a5a7b640cc42c6daaad6842cd5b311 (diff) | |
download | emacs-8d5aa8df4ad268c253712efe9ca3b3b158d19433.tar.gz |
Fix inserting selection data into Mozilla programs
* lisp/select.el (xselect-convert-to-text-uri-list): Don't
return any value when converting non-DND selections to this
drag-and-drop target.
Reported by Tobias Bading <tbading@web.de>.
Diffstat (limited to 'lisp/select.el')
-rw-r--r-- | lisp/select.el | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/lisp/select.el b/lisp/select.el index 7f089c62dd5..09c678867d0 100644 --- a/lisp/select.el +++ b/lisp/select.el @@ -807,19 +807,24 @@ This function returns the string \"emacs\"." (defun xselect-convert-to-username (_selection _type _value) (user-real-login-name)) -(defun xselect-convert-to-text-uri-list (_selection _type value) - (let ((string - (if (stringp value) - (xselect--encode-string 'TEXT - (concat (url-encode-url value) "\n")) - (when (vectorp value) - (with-temp-buffer - (cl-loop for tem across value - do (progn - (insert (url-encode-url tem)) - (insert "\n"))) - (xselect--encode-string 'TEXT (buffer-string))))))) - (cons 'text/uri-list (cdr string)))) +(defun xselect-convert-to-text-uri-list (selection _type value) + ;; While `xselect-uri-list-available-p' ensures that this target + ;; will not be reported in the TARGETS of non-drag-and-drop + ;; selections, Firefox stupidly converts to it anyway. Check that + ;; the conversion request is being made for the correct selection. + (and (eq selection 'XdndSelection) + (let ((string + (if (stringp value) + (xselect--encode-string 'TEXT + (concat (url-encode-url value) "\n")) + (when (vectorp value) + (with-temp-buffer + (cl-loop for tem across value + do (progn + (insert (url-encode-url tem)) + (insert "\n"))) + (xselect--encode-string 'TEXT (buffer-string))))))) + (cons 'text/uri-list (cdr string))))) (defun xselect-convert-to-xm-file (selection _type value) (when (and (stringp value) |