summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Djärv <jan.h.d@swipnet.se>2004-04-02 17:29:52 +0000
committerJan Djärv <jan.h.d@swipnet.se>2004-04-02 17:29:52 +0000
commitbcfa9925a6e20dcc00ad7a18cb5b577dba018aca (patch)
tree8f9c0f637b1318504cc7c9fe2660c47a927ab460
parent78cfc6adfc7923f630cc3a821ecd85d2cc105518 (diff)
downloademacs-bcfa9925a6e20dcc00ad7a18cb5b577dba018aca.tar.gz
* x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use
utf-16le on little endian machines and utf-16be otherwise.
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/x-dnd.el11
2 files changed, 14 insertions, 2 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 918c16382b2..cb1d8d0e4ae 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2004-04-02 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
+
+ * x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use
+ utf-16le on little endian machines and utf-16be otherwise.
+
2004-04-02 David Kastrup <dak@gnu.org>
* net/browse-url.el (browse-url-generic): Use call-process
diff --git a/lisp/x-dnd.el b/lisp/x-dnd.el
index 91ca053afa2..cdb0a63ace6 100644
--- a/lisp/x-dnd.el
+++ b/lisp/x-dnd.el
@@ -336,7 +336,12 @@ WINDOW is the window where the drop happened. ACTION is ignored.
DATA is the moz-url, which is formatted as two strings separated by \r\n.
The first string is the URL, the second string is the title of that URL.
DATA is encoded in utf-16. Decode the URL and call `x-dnd-handle-uri-list'."
- (let* ((string (decode-coding-string data 'utf-16le)) ;; ALWAYS LE???
+ ;; Mozilla and applications based on it (Galeon for example) uses
+ ;; text/unicode, but it is impossible to tell if it is le or be. Use what
+ ;; the machine Emacs runs on use. This looses if dropping between machines
+ ;; with different endian, but it is the best we can do.
+ (let* ((coding (if (eq (byteorder) ?B) 'utf-16be 'utf-16le))
+ (string (decode-coding-string data coding))
(strings (split-string string "[\r\n]" t))
;; Can one drop more than one moz-url ?? Assume not.
(url (car strings))
@@ -351,7 +356,9 @@ TEXT is the text as a string, WINDOW is the window where the drop happened."
(defun x-dnd-insert-utf16-text (window action text)
"Decode the UTF-16 text and insert it at point.
TEXT is the text as a string, WINDOW is the window where the drop happened."
- (x-dnd-insert-text window action (decode-coding-string text 'utf-16le)))
+ ;; See comment in x-dnd-handle-moz-url about coding.
+ (let ((coding (if (eq (byteorder) ?B) 'utf-16be 'utf-16le)))
+ (x-dnd-insert-text window action (decode-coding-string text coding))))
(defun x-dnd-insert-ctext (window action text)
"Decode the compound text and insert it at point.