]> git.eshelyaron.com Git - emacs.git/commitdiff
* x-dnd.el (x-dnd-version-from-flags)
authorJan Djärv <jan.h.d@swipnet.se>
Mon, 20 Jun 2011 20:49:12 +0000 (22:49 +0200)
committerJan Djärv <jan.h.d@swipnet.se>
Mon, 20 Jun 2011 20:49:12 +0000 (22:49 +0200)
(x-dnd-more-than-3-from-flags): New functions that handle long-as-cons
and long as number.
(x-dnd-handle-xdnd): Call functions above.

Fixes: debbugs:8899
lisp/ChangeLog
lisp/x-dnd.el

index ceab0a14fcfb2a3e8038d868da83aabf4acca8fb..76339320b83723f0b7a4fca7520650d98b220337 100644 (file)
@@ -1,3 +1,10 @@
+2011-06-20  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * x-dnd.el (x-dnd-version-from-flags)
+       (x-dnd-more-than-3-from-flags): New functions that handle long-as-cons
+       and long as number (Bug#8899).
+       (x-dnd-handle-xdnd): Call functions above (Bug#8899).
+
 2011-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * minibuffer.el (completion-metadata): Prepend the alist with `metadata'.
index 1c6af1f45f27403c0550a3edce95bcdbe4547641..04b759a81163808358cb118d0ab8d154c2039067 100644 (file)
@@ -433,6 +433,18 @@ otherwise return the frame coordinates."
 (declare-function x-get-selection-internal "xselect.c"
                  (selection-symbol target-type &optional time-stamp))
 
+(defun x-dnd-version-from-flags (flags)
+  "Return the version byte from the 32 bit FLAGS in an XDndEnter message"
+  (if (consp flags)   ;; Long as cons
+      (ash (car flags) -8)
+    (ash flags -24))) ;; Ordinary number
+
+(defun x-dnd-more-than-3-from-flags (flags)
+  "Return the nmore-than3 bit from the 32 bit FLAGS in an XDndEnter message"
+  (if (consp flags)
+      (logand (cdr flags) 1)
+    (logand flags 1)))
+      
 (defun x-dnd-handle-xdnd (event frame window message _format data)
   "Receive one XDND event (client message) and send the appropriate reply.
 EVENT is the client message.  FRAME is where the mouse is now.
@@ -440,9 +452,10 @@ WINDOW is the window within FRAME where the mouse is now.
 FORMAT is 32 (not used).  MESSAGE is the data part of an XClientMessageEvent."
   (cond ((equal "XdndEnter" message)
         (let* ((flags (aref data 1))
-               (version (and (consp flags) (ash (car flags) -8)))
-               (more-than-3 (and (consp flags) (cdr flags)))
+               (version (x-dnd-version-from-flags flags))
+               (more-than-3 (x-dnd-more-than-3-from-flags flags))
                (dnd-source (aref data 0)))
+       (message "%s %s" version  more-than-3)
           (if version  ;; If flags is bad, version will be nil.
               (x-dnd-save-state
                window nil nil