# HG changeset patch # User YAMAMOTO Mitsuharu # Date 1148099358 0 # Node ID b1742b0066f22a634dbd3263f19355deeb40cd24 # Parent eca94c558ceb64d6b03bfcdfb11dc4d8b13b753e (x-dnd-handle-file-name): Encode and escape file names on conversion to URLs. diff -r eca94c558ceb -r b1742b0066f2 lisp/x-dnd.el --- 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))