Function: x-dnd-xm-read-targets-table
x-dnd-xm-read-targets-table is a byte-compiled function defined in
x-dnd.el.gz.
Signature
(x-dnd-xm-read-targets-table FRAME)
Documentation
Read the Motif targets table on FRAME.
Return a vector of vectors of numbers, which are the atoms of the available selection targets for each index into the selection table.
Source Code
;; Defined in /usr/src/emacs/lisp/x-dnd.el.gz
(defun x-dnd-xm-read-targets-table (frame)
"Read the Motif targets table on FRAME.
Return a vector of vectors of numbers, which are the atoms of the
available selection targets for each index into the selection
table."
(let* ((drag-window (x-window-property "_MOTIF_DRAG_WINDOW"
frame "WINDOW" 0 nil t))
(targets-data (x-window-property "_MOTIF_DRAG_TARGETS"
frame "_MOTIF_DRAG_TARGETS"
drag-window nil t))
(header (x-dnd-xm-unpack-targets-table-header targets-data))
(vec (make-vector (nth 2 header) nil))
(current-byte 8)
(i 0))
(unless (stringp targets-data)
(error "Expected format 8, got %s" (type-of targets-data)))
(prog1 vec
(while (< i (nth 2 header))
(let ((rec (x-dnd-xm-read-single-rec targets-data
current-byte)))
(aset vec i (nth 2 rec))
(setq current-byte (+ current-byte (car rec)))
(setq i (1+ i))))
(unless (eq current-byte (nth 3 header))
(error "Targets table header says size is %d, but it is actually %d"
(nth 3 header) current-byte)))))