X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/a7610c523cdd0f381e05d10dd2e5abdaf60f8bbf..e1ef0dac0866570df62f96fb004de896f6e82397:/lisp/x-dnd.el diff --git a/lisp/x-dnd.el b/lisp/x-dnd.el index fc593224d2..23108d5cce 100644 --- a/lisp/x-dnd.el +++ b/lisp/x-dnd.el @@ -1,11 +1,12 @@ -;;; x-dnd.el --- drag and drop support for X. +;;; x-dnd.el --- drag and drop support for X -*- coding: utf-8 -*- -;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 +;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; Free Software Foundation, Inc. -;; Author: Jan Dj,Ad(Brv +;; Author: Jan Djärv ;; Maintainer: FSF ;; Keywords: window, drag, drop +;; Package: emacs ;; This file is part of GNU Emacs. @@ -79,6 +80,7 @@ if drop is successful, nil if not." :group 'x) (defcustom x-dnd-known-types + (mapcar 'purecopy '("text/uri-list" "text/x-moz-url" "_NETSCAPE_URL" @@ -91,7 +93,7 @@ if drop is successful, nil if not." "COMPOUND_TEXT" "STRING" "TEXT" - ) + )) "The types accepted by default for dropped data. The types are chosen in the order they appear in the list." :version "22.1" @@ -174,10 +176,10 @@ action and type we got from `x-dnd-test-function'." (let ((buffer (when (window-live-p window) (window-buffer window))) (current-state (x-dnd-get-state-for-frame window))) - (when (or (not (equal buffer (aref current-state 0))) - (not (equal window (aref current-state 1))) - (not (equal action (aref current-state 3)))) - (save-excursion + (unless (and (equal buffer (aref current-state 0)) + (equal window (aref current-state 1)) + (equal action (aref current-state 3))) + (save-current-buffer (when buffer (set-buffer buffer)) (let* ((action-type (funcall x-dnd-test-function window @@ -218,7 +220,7 @@ 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'." ;; 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 + ;; the machine Emacs runs on use. This loses 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)) @@ -764,5 +766,4 @@ FORMAT is 32 (not used). MESSAGE is the data part of an XClientMessageEvent." (provide 'x-dnd) -;; arch-tag: b621fb7e-50da-4323-850b-5fc71ae64621 ;;; x-dnd.el ends here