-
Notifications
You must be signed in to change notification settings - Fork 13
/
selection.lisp
38 lines (27 loc) · 969 Bytes
/
selection.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
;; (C) 2011 Pierre-Yves Baccou
(defstruct selection
atom
owner
last-change-time)
(defvar *selections* nil)
;; event SelectionNotify : never sent by the server, always by clients via SendEvent.
(defevent :SelectionClear (owner selection (time (server-time)))
:mode :custom :custom-clients (list (selection-previous-owner selection)))
(defevent :SelectionRequest (owner selection target property requestor (time (server-time)))
:mode :custom :custom-clients (list (selection-owner selection)))
(defrequest :GetSelectionOwner ((sel xatom))
(reply :owner nil))
(unimplemented :SetSelectionOwner t)
(unimplemented :ConvertSelection t)
#| unfinished
(defrequest SetSelectionOwner ((sel xatom) (owner window (nil)) time)
(let ((selection (find sel
*selections*
:key #'selection-atom)))
(unless selection
(setf selection
(make-selection :atom sel
:time (server-time)))
(push selection
*selections*))
|#