Commit ca530739 authored by Jan Djärv's avatar Jan Djärv
Browse files

* 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.
(x-dnd-handle-xdnd): Call functions above.

Fixes: debbugs:8899
parent 4cb3bfa0
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> 2011-06-20 Stefan Monnier <monnier@iro.umontreal.ca>
* minibuffer.el (completion-metadata): Prepend the alist with `metadata'. * minibuffer.el (completion-metadata): Prepend the alist with `metadata'.
......
...@@ -433,6 +433,18 @@ otherwise return the frame coordinates." ...@@ -433,6 +433,18 @@ otherwise return the frame coordinates."
(declare-function x-get-selection-internal "xselect.c" (declare-function x-get-selection-internal "xselect.c"
(selection-symbol target-type &optional time-stamp)) (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) (defun x-dnd-handle-xdnd (event frame window message _format data)
"Receive one XDND event (client message) and send the appropriate reply. "Receive one XDND event (client message) and send the appropriate reply.
EVENT is the client message. FRAME is where the mouse is now. 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. ...@@ -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." FORMAT is 32 (not used). MESSAGE is the data part of an XClientMessageEvent."
(cond ((equal "XdndEnter" message) (cond ((equal "XdndEnter" message)
(let* ((flags (aref data 1)) (let* ((flags (aref data 1))
(version (and (consp flags) (ash (car flags) -8))) (version (x-dnd-version-from-flags flags))
(more-than-3 (and (consp flags) (cdr flags))) (more-than-3 (x-dnd-more-than-3-from-flags flags))
(dnd-source (aref data 0))) (dnd-source (aref data 0)))
(message "%s %s" version more-than-3)
(if version ;; If flags is bad, version will be nil. (if version ;; If flags is bad, version will be nil.
(x-dnd-save-state (x-dnd-save-state
window nil nil window nil nil
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment