changeset 70761:b1742b0066f2

(x-dnd-handle-file-name): Encode and escape file names on conversion to URLs.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Sat, 20 May 2006 04:29:18 +0000
parents eca94c558ceb
children 65f2c33d043f
files lisp/x-dnd.el
diffstat 1 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/x-dnd.el	Sat May 20 04:28:48 2006 +0000
+++ b/lisp/x-dnd.el	Sat May 20 04:29:18 2006 +0000
@@ -256,14 +256,20 @@
     retval))
 
 (defun x-dnd-handle-file-name (window action string)
-  "Prepend file:// to file names and call `dnd-handle-one-url'.
+  "Convert file names to URLs and call `dnd-handle-one-url'.
 WINDOW is the window where the drop happened.
 STRING is the file names as a string, separated by nulls."
   (let ((uri-list (split-string string "[\0\r\n]" t))
+	(coding (and default-enable-multibyte-characters
+		     (or file-name-coding-system
+			 default-file-name-coding-system)))
 	retval)
     (dolist (bf uri-list)
       ;; If one URL is handeled, treat as if the whole drop succeeded.
-      (let* ((file-uri (concat "file://" bf))
+      (if coding (setq bf (encode-coding-string bf coding)))
+      (let* ((file-uri (concat "file://"
+			       (mapconcat 'url-hexify-string
+					  (split-string bf "/") "/")))
 	     (did-action (dnd-handle-one-url window action file-uri)))
 	(when did-action (setq retval did-action))))
     retval))