Location: lg@xxxxxxxxxxxxxx http://arch.xwem.org/2005/
Revision: xlib--main--2.1--patch-6
Archive: lg@xxxxxxxxxxxxxx
Creator: Zajcev Evgeny <lg@xxxxxxxx>
Date: Fri Feb 4 02:52:26 MSK 2005
Standard-date: 2005-02-03 23:52:26 GMT
Modified-files: lisp/xlib-xc.el lisp/xlib-xr.el
New-patches: dev@xxxxxxxxxxxxxxxx/xlib--dev--2.1--patch-2
lg@xxxxxxxxxxxxxx/xlib--main--2.1--patch-6
Summary: merge from ckent, X Event define/declare addons
Keywords: merge, ckent
* lisp/xlib-xr.el (X-Event-define): [addon] DESCR splited to EV-NAME,
EV-MSG and WIN-IDX. New parameter EVENT-WIN-IDX added.
* lisp/xlib-xr.el (X-Event-declare): [addon] Ditto.
* added files
{arch}/xlib/xlib--dev/xlib--dev--2.1/dev@xxxxxxxxxxxxxxxx/patch-log/patch-2
{arch}/xlib/xlib--main/xlib--main--2.1/lg@xxxxxxxxxxxxxx/patch-log/patch-6
* modified files
--- orig/lisp/xlib-xc.el
+++ mod/lisp/xlib-xc.el
@@ -351,23 +351,6 @@
;; increase request sequence number
(incf (X-Dpy-rseq-id xdpy)))
-;;; Event dispatcher
-(defun X-Dpy-default-events-dispatcher (xdpy win xev)
- "Default events dispatcher."
- (X-Dpy-log xdpy 'x-event "Get event: %S, for win: %S" '(X-Event-name xev)
- '(if (X-Win-p win) (X-Win-id win) win))
-
- (when (X-Win-p win)
- ;; First run display handlers
- (when (X-Dpy-event-handlers xdpy)
- (X-Dpy-EventHandler-runall xdpy xev))
-
- ;; Then run WIN specific handlers
- (when (X-Win-event-handlers win)
- ;; WIN has its own event handlers
- (X-Win-EventHandler-runall win xev))
- ))
-
;;; Sending section
(defmacro X-Force-char-num (maybechar)
"Force MAYBECHAR to be a number for XEmacs platform."
--- orig/lisp/xlib-xr.el
+++ mod/lisp/xlib-xr.el
@@ -115,11 +115,17 @@
(nth 1 (X-Event-evinfo xev)))
(defsubst X-Event-win (xev)
- "Return window for which EV generated.
-Return nil if there no window for which event XEV is generated."
+ "Return window which is the subject of the XEV.
+Return nil if there no such window."
(let ((evd (aref (aref X-EventsList (X-Event-type xev)) 2)))
(and (numberp evd) (nth evd (X-Event-evinfo xev)))))
+(defsubst X-Event-win-event (xev)
+ "Return window for which XEV is generated.
+Return nil if there is no such window."
+ (let ((evd (aref (aref X-EventsList (X-Event-type xev)) 3)))
+ (and (numberp evd) (nth evd (X-Event-evinfo xev)))))
+
(defsubst X-Event-name (xev)
"Return symbolic XEV name."
(aref (aref X-EventsList (X-Event-type xev)) 0))
@@ -131,15 +137,18 @@
;; TODO: write me ..
))
-(defmacro X-Event-declare (type descr)
+(defmacro X-Event-declare (type ev-name ev-msg &optional win-idx event-win-idx)
"Only declare event of TYPE with DESCR in `X-EventsList'."
- `(aset X-EventsList ,type ,descr))
+ `(aset X-EventsList ,type
+ (vector ,ev-name (quote ,ev-msg) ,win-idx (or ,event-win-idx
,win-idx))))
-(defmacro X-Event-define (type name dnames descr)
+(defmacro X-Event-define (type name dnames ev-name ev-msg &optional win-idx
event-win-idx)
"Define new event of TYPE, NAME and description of event DESCR."
(let ((offs 0)
fsym forms)
- (push `(aset X-EventsList ,type ,descr) forms)
+ (push `(aset X-EventsList ,type
+ (vector ,ev-name (quote ,ev-msg) ,win-idx (or ,event-win-idx
,win-idx)))
+ forms)
(while dnames
(when (car dnames)
(setq fsym (intern (concat "X-Event-" name "-" (symbol-name (car
dnames)))))
@@ -288,392 +297,391 @@
;; TODO:
;; - Should be X-Dpy depended to support extensions derived events
(X-Event-define X-KeyPress "xkey" (keycode nil time root event child root-x
root-y event-x event-y state same-screen)
- [ "KeyPress"
- ( [1 integerp] ; keycode
- [2 integerp] ; sequence
- [4 integerp] ; time
- [4 :X-Win] ; root
- [4 :X-Win] ; event
- [4 :X-Win] ; child
- [2 integerp] ; root_x
- [2 integerp] ; root_y
- [2 integerp] ; event_x
- [2 integerp] ; event_y
- [2 integerp] ; state
- [1 booleanp] ; same_screen
- [1 nil] )
- 4 ])
+ "KeyPress"
+ ([1 integerp] ; keycode
+ [2 integerp] ; sequence
+ [4 integerp] ; time
+ [4 :X-Win] ; root
+ [4 :X-Win] ; event (WIN-EVENT)
+ [4 :X-Win] ; child
+ [2 integerp] ; root_x
+ [2 integerp] ; root_y
+ [2 integerp] ; event_x
+ [2 integerp] ; event_y
+ [2 integerp] ; state
+ [1 booleanp] ; same_screen
+ [1 nil])
+ 4)
(X-Event-declare X-KeyRelease
- [ "KeyRelease"
- ( [1 integerp] ; keycode
- [2 integerp] ; sequence
- [4 integerp] ; time
- [4 :X-Win] ; root
- [4 :X-Win] ; event
- [4 :X-Win] ; child
- [2 integerp] ; root_x
- [2 integerp] ; root_y
- [2 integerp] ; event_x
- [2 integerp] ; event_y
- [2 integerp] ; state
- [1 booleanp] ; same_screen
- [1 nil] )
- 4 ])
+ "KeyRelease"
+ ([1 integerp] ; keycode
+ [2 integerp] ; sequence
+ [4 integerp] ; time
+ [4 :X-Win] ; root
+ [4 :X-Win] ; event
+ [4 :X-Win] ; child
+ [2 integerp] ; root_x
+ [2 integerp] ; root_y
+ [2 integerp] ; event_x
+ [2 integerp] ; event_y
+ [2 integerp] ; state
+ [1 booleanp] ; same_screen
+ [1 nil])
+ 4)
(X-Event-define X-ButtonPress "xbutton" (button nil time root event child
root-x root-y event-x event-y state same-screen)
- [ "ButtonPress"
- ( [1 integerp] ; button
- [2 integerp] ; sequence
- [4 integerp] ; time
- [4 :X-Win] ; root
- [4 :X-Win] ; event
- [4 :X-Win] ; child
- [2 integerp] ; root_x
- [2 integerp] ; root_y
- [2 integerp] ; event_x
- [2 integerp] ; event_y
- [2 integerp] ; state
- [1 booleanp] ; same_screen
- [1 nil] )
- 4 ])
+ "ButtonPress"
+ ( [1 integerp] ; button
+ [2 integerp] ; sequence
+ [4 integerp] ; time
+ [4 :X-Win] ; root
+ [4 :X-Win] ; event
+ [4 :X-Win] ; child
+ [2 integerp] ; root_x
+ [2 integerp] ; root_y
+ [2 integerp] ; event_x
+ [2 integerp] ; event_y
+ [2 integerp] ; state
+ [1 booleanp] ; same_screen
+ [1 nil] )
+ 4)
(X-Event-declare X-ButtonRelease
- [ "ButtonRelease"
- ( [1 integerp] ; button
- [2 integerp] ; sequence
- [4 integerp] ; time
- [4 :X-Win] ; root
- [4 :X-Win] ; event
- [4 :X-Win] ; child
- [2 integerp] ; root_x
- [2 integerp] ; root_y
- [2 integerp] ; event_x
- [2 integerp] ; event_y
- [2 integerp] ; state
- [1 booleanp] ; same_screen
- [1 nil] )
- 4 ])
+ "ButtonRelease"
+ ( [1 integerp] ; button
+ [2 integerp] ; sequence
+ [4 integerp] ; time
+ [4 :X-Win] ; root
+ [4 :X-Win] ; event
+ [4 :X-Win] ; child
+ [2 integerp] ; root_x
+ [2 integerp] ; root_y
+ [2 integerp] ; event_x
+ [2 integerp] ; event_y
+ [2 integerp] ; state
+ [1 booleanp] ; same_screen
+ [1 nil] )
+ 4)
(X-Event-define X-MotionNotify "xmotion" (nil nil time root event child root-x
root-y event-x event-y state same-screen)
- [ "MotionNotify"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 integerp] ; time
- [4 :X-Win] ; root
- [4 :X-Win] ; event
- [4 :X-Win] ; child
- [2 integerp] ; root_x
- [2 integerp] ; root_y
- [2 integerp] ; event_x
- [2 integerp] ; event_y
- [2 integerp] ; state
- [1 booleanp] ; same_screen
- [1 nil] )
- 4 ])
+ "MotionNotify"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 integerp] ; time
+ [4 :X-Win] ; root
+ [4 :X-Win] ; event
+ [4 :X-Win] ; child
+ [2 integerp] ; root_x
+ [2 integerp] ; root_y
+ [2 integerp] ; event_x
+ [2 integerp] ; event_y
+ [2 integerp] ; state
+ [1 booleanp] ; same_screen
+ [1 nil] )
+ 4)
(X-Event-define X-EnterNotify "xcrossing" (nil nil time root event child
root-x root-y event-x event-y state mode same-screen-focus)
- [ "EnterNotify"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 integerp] ; time
- [4 :X-Win] ; root
- [4 :X-Win] ; event
- [4 :X-Win] ; child
- [2 integerp] ; root_x
- [2 integerp] ; root_y
- [2 integerp] ; event_x
- [2 integerp] ; event_y
- [2 integerp] ; state
- [1 integerp] ; mode
- [1 integerp]) ; same-screen, focus
- 4 ])
+ "EnterNotify"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 integerp] ; time
+ [4 :X-Win] ; root
+ [4 :X-Win] ; event
+ [4 :X-Win] ; child
+ [2 integerp] ; root_x
+ [2 integerp] ; root_y
+ [2 integerp] ; event_x
+ [2 integerp] ; event_y
+ [2 integerp] ; state
+ [1 integerp] ; mode
+ [1 integerp]) ; same-screen, focus
+ 4)
(X-Event-declare X-LeaveNotify
- [ "LeaveNotify"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 integerp] ; time
- [4 :X-Win] ; root
- [4 :X-Win] ; event
- [4 :X-Win] ; child
- [2 integerp] ; root_x
- [2 integerp] ; root_y
- [2 integerp] ; event_x
- [2 integerp] ; event_y
- [2 integerp] ; state
- [1 integerp] ; mode
- [1 integerp] ) ; same-screen, focus
- 4 ])
+ "LeaveNotify"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 integerp] ; time
+ [4 :X-Win] ; root
+ [4 :X-Win] ; event
+ [4 :X-Win] ; child
+ [2 integerp] ; root_x
+ [2 integerp] ; root_y
+ [2 integerp] ; event_x
+ [2 integerp] ; event_y
+ [2 integerp] ; state
+ [1 integerp] ; mode
+ [1 integerp] ) ; same-screen, focus
+ 4)
(X-Event-define X-FocusIn "xfocus" (nil nil event mode)
- [ "FocusIn"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; event
- [1 integerp] ; mode
- [23 nil] )
- 2 ])
+ "FocusIn"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; event
+ [1 integerp] ; mode
+ [23 nil] )
+ 2)
(X-Event-declare X-FocusOut
- [ "FocusOut"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; event
- [1 integerp] ; mode
- [23 nil] )
- 2 ])
+ "FocusOut"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; event
+ [1 integerp] ; mode
+ [23 nil] )
+ 2)
;; TODO: X-KeymapNotify
(X-Event-define X-Expose "xexpose" (nil nil window x y width height count)
- [ "Expose"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; window
- [2 integerp] ; x
- [2 integerp] ; y
- [2 integerp] ; width
- [2 integerp] ; height
- [2 integerp] ; count
- [14 nil] )
- 2 ])
+ "Expose"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; window
+ [2 integerp] ; x
+ [2 integerp] ; y
+ [2 integerp] ; width
+ [2 integerp] ; height
+ [2 integerp] ; count
+ [14 nil] )
+ 2)
(X-Event-define X-GraphicsExpose "xgraphicsexpose" (nil nil drawable x y width
height minor-event count major-event)
- [ "GraphicsExpose"
- ([1 integerp]
- [2 integerp]
- [4 integerp] ; drawable
- [2 integerp] ; x
- [2 integerp] ; y
- [2 integerp] ; width
- [2 integerp] ; height
- [2 integerp] ; minorEvent
- [2 integerp] ; count
- [1 integerp] ; majorEvent
- [11 nil])
- 2 ])
+ "GraphicsExpose"
+ ([1 integerp]
+ [2 integerp]
+ [4 integerp] ; drawable
+ [2 integerp] ; x
+ [2 integerp] ; y
+ [2 integerp] ; width
+ [2 integerp] ; height
+ [2 integerp] ; minorEvent
+ [2 integerp] ; count
+ [1 integerp] ; majorEvent
+ [11 nil])
+ 2)
(X-Event-define X-NoExpose "xnoexpose" (nil nil drawable minor-event
major-event)
- [ "NoExpose"
- ([1 integerp]
- [2 integerp]
- [4 integerp] ; drawable
- [2 integerp] ; minorEvent
- [1 integerp] ; majorEvent
- [21 nil])
- 2 ])
+ "NoExpose"
+ ([1 integerp]
+ [2 integerp]
+ [4 integerp] ; drawable
+ [2 integerp] ; minorEvent
+ [1 integerp] ; majorEvent
+ [21 nil])
+ 2)
(X-Event-define X-VisibilityNotify "xvisibility" (nil nil window state)
- [ "VisibilityNotify"
- ([1 integerp]
- [2 integerp]
- [4 :X-Win] ; window
- [1 integerp] ; state
- [23 nil])
- 2 ])
+ "VisibilityNotify"
+ ([1 integerp]
+ [2 integerp]
+ [4 :X-Win] ; window
+ [1 integerp] ; state
+ [23 nil])
+ 2)
(X-Event-define X-CreateNotify "xcreatewindow" (nil nil parent window x y
width height border-width override)
- [ "CreateNotify"
- ([1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; parent window
- [4 :X-Win] ; window
- [2 integerp] ; x
- [2 integerp] ; y
- [2 integerp] ; width
- [2 integerp] ; height
- [2 integerp] ; border width
- [1 booleanp] ; override-redirect
- [9 nil])
- 2 ])
+ "CreateNotify"
+ ([1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; parent window
+ [4 :X-Win] ; window
+ [2 integerp] ; x
+ [2 integerp] ; y
+ [2 integerp] ; width
+ [2 integerp] ; height
+ [2 integerp] ; border width
+ [1 booleanp] ; override-redirect
+ [9 nil])
+ 2)
(X-Event-define X-DestroyNotify "xdestroywindow" (nil nil event window)
- [ "DestroyNotify"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; event window
- [4 :X-Win] ; window
- [20 nil])
- 2 ])
+ "DestroyNotify"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; event window
+ [4 :X-Win] ; window
+ [20 nil])
+ 3 2)
(X-Event-define X-UnmapNotify "xunmap" (nil nil event window from-configure)
- [ "UnmapNotify"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; event
- [4 :X-Win] ; window
- [1 booleanp] ; fromconfigure
- [19 nil])
- 2 ])
+ "UnmapNotify"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; event
+ [4 :X-Win] ; window
+ [1 booleanp] ; fromconfigure
+ [19 nil])
+ 3 2)
(X-Event-define X-MapNotify "xmap" (nil nil event window override)
- [ "MapNotify"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; event window
- [4 :X-Win] ; window
- [1 booleanp] ; override-redirect
- [19 nil])
- 2 ])
+ "MapNotify"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; event window
+ [4 :X-Win] ; window
+ [1 booleanp] ; override-redirect
+ [19 nil])
+ 3 2)
(X-Event-define X-MapRequest "xmaprequest" (nil nil parent window)
- [ "MapRequest"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; parent window
- [4 :X-Win] ; window
- [20 nil])
- 2 ])
+ "MapRequest"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; parent window
+ [4 :X-Win] ; window
+ [20 nil])
+ 3 2)
(X-Event-define X-ReparentNotify "xreparent" (nil nil event window parent x y
override)
- [ "ReparentNotify"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; event
- [4 :X-Win] ; window
- [4 :X-Win] ; parent
- [2 integerp] ; x
- [2 integerp] ; y
- [1 integerp] ; override
- [11 nil])
- 2 ])
+ "ReparentNotify"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; event
+ [4 :X-Win] ; window
+ [4 :X-Win] ; parent
+ [2 integerp] ; x
+ [2 integerp] ; y
+ [1 integerp] ; override
+ [11 nil])
+ 3 2)
(X-Event-define X-ConfigureNotify "xconfigure" (nil nil event window
above-sibling x y width height border-width override-redirect)
- [ "ConfigureNotify"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; event
- [4 :X-Win] ; window
- [4 :X-Win] ; above-sibling
- [2 integerp] ; x
- [2 integerp] ; y
- [2 integerp] ; width
- [2 integerp] ; height
- [2 integerp] ; border-width
- [1 booleanp] ; override-redirect
- [5 nil] )
- 2 ])
+ "ConfigureNotify"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; event
+ [4 :X-Win] ; window
+ [4 :X-Win] ; above-sibling
+ [2 integerp] ; x
+ [2 integerp] ; y
+ [2 integerp] ; width
+ [2 integerp] ; height
+ [2 integerp] ; border-width
+ [1 booleanp] ; override-redirect
+ [5 nil] )
+ 3 2)
(X-Event-define X-ConfigureRequest "xconfigurerequest" (stackmode nil parent
window sibling x y width height border-width value-mask)
- [ "ConfigureRequest"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; parent window
- [4 :X-Win] ; window
- [4 :X-Win] ; sibling
- [2 integerp] ; x
- [2 integerp] ; y
- [2 integerp] ; width
- [2 integerp] ; height
- [2 integerp] ; border width
- [2 integerp] ; value mask
- [4 nil])
- 2 ])
+ "ConfigureRequest"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; parent window
+ [4 :X-Win] ; window
+ [4 :X-Win] ; sibling
+ [2 integerp] ; x
+ [2 integerp] ; y
+ [2 integerp] ; width
+ [2 integerp] ; height
+ [2 integerp] ; border width
+ [2 integerp] ; value mask
+ [4 nil])
+ 3 2)
(X-Event-define X-GravityNotify "xgravity" (nil nil event window x y)
- [ "GravityNotify"
- ([1 integerp]
- [2 integerp]
- [4 :X-Win] ; event window
- [4 :X-Win] ; window
- [2 integerp] ; x
- [2 integerp] ; y
- [16 nil])
- 2 ])
+ "GravityNotify"
+ ([1 integerp]
+ [2 integerp]
+ [4 :X-Win] ; event window
+ [4 :X-Win] ; window
+ [2 integerp] ; x
+ [2 integerp] ; y
+ [16 nil])
+ 3 2)
(X-Event-define X-ResizeRequest "xresizerequest" (nil nil window width height)
- [ "ResizeRequest"
- ( [1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; window
- [2 integerp] ; width
- [2 integerp] ; height
- [20 nil] )
- 2 ])
+ "ResizeRequest"
+ ( [1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; window
+ [2 integerp] ; width
+ [2 integerp] ; height
+ [20 nil] )
+ 2)
(X-Event-define X-CirculateNotify "xcirculate" (nil nil event window parent
place)
- [ "CirculateNotify"
- ([1 integerp]
- [2 integerp]
- [4 :X-Win] ; event window
- [4 :X-Win] ; window
- [4 :X-Win] ; parent
- [1 integerp] ; place
- [15 nil])
- 2 ])
+ "CirculateNotify"
+ ([1 integerp]
+ [2 integerp]
+ [4 :X-Win] ; event window
+ [4 :X-Win] ; window
+ [4 :X-Win] ; parent
+ [1 integerp] ; place
+ [15 nil])
+ 3 2)
;; The event field in the xcirculate record is really the parent when this
;; is used as a CirculateRequest instead of a CircluateNotify
(X-Event-declare X-CirculateRequest
- [ "CirculateRequest"
- ([1 integerp]
- [2 integerp]
- [4 :X-Win] ; event window
- [4 :X-Win] ; window
- [4 :X-Win] ; parent
- [1 integerp] ; place
- [15 nil])
- 2 ])
+ "CirculateRequest"
+ ([1 integerp]
+ [2 integerp]
+ [4 :X-Win] ; event window
+ [4 :X-Win] ; window
+ [4 :X-Win] ; parent
+ [1 integerp] ; place
+ [15 nil])
+ 3 2)
(X-Event-define X-PropertyNotify "xproperty" (nil nil window atom time state)
- [ "PropertyNotify"
- ( [1 integerp]
- [2 integerp]
- [4 :X-Win] ; window
- [4 :X-Atom] ; atom
- [4 integerp] ; time
- [1 integerp] ; state
- [15 nil]
- ) 2 ])
+ "PropertyNotify"
+ ( [1 integerp]
+ [2 integerp]
+ [4 :X-Win] ; window
+ [4 :X-Atom] ; atom
+ [4 integerp] ; time
+ [1 integerp] ; state
+ [15 nil])
+ 2)
(X-Event-define X-SelectionClear "xselectionclear" (nil nil time window atom)
- [ "SelectionClear"
- ([1 integerp]
- [2 integerp]
- [4 integerp] ; time
- [4 :X-Win] ; window
- [4 :X-Atom] ; atom
- [16 nil])
- 3 ])
+ "SelectionClear"
+ ([1 integerp]
+ [2 integerp]
+ [4 integerp] ; time
+ [4 :X-Win] ; window
+ [4 :X-Atom] ; atom
+ [16 nil])
+ 3)
(X-Event-define X-SelectionRequest "xselectionrequest" (nil nil time owner
requestor selection target property)
- [ "SelectionRequest"
- ([1 integerp]
- [2 integerp]
- [4 integerp] ; time
- [4 :X-Win] ; owner
- [4 :X-Win] ; requestor
- [4 :X-Atom] ; selection atom
- [4 :X-Atom] ; target atom
- [4 :X-Atom] ; property atom
- [4 nil])
- 4 ])
+ "SelectionRequest"
+ ([1 integerp]
+ [2 integerp]
+ [4 integerp] ; time
+ [4 :X-Win] ; owner
+ [4 :X-Win] ; requestor
+ [4 :X-Atom] ; selection atom
+ [4 :X-Atom] ; target atom
+ [4 :X-Atom] ; property atom
+ [4 nil])
+ 4)
(X-Event-define X-SelectionNotify "xselection" (nil nil time requestor
selection target property)
- [ "SelectionNotify"
- ([1 integerp]
- [2 integerp]
- [4 integerp] ; time
- [4 :X-Win] ; requestor
- [4 :X-Atom] ; selection atom
- [4 :X-Atom] ; target atom
- [4 :X-Atom] ; property atom
- [8 nil])
- 3 ])
+ "SelectionNotify"
+ ([1 integerp]
+ [2 integerp]
+ [4 integerp] ; time
+ [4 :X-Win] ; requestor
+ [4 :X-Atom] ; selection atom
+ [4 :X-Atom] ; target atom
+ [4 :X-Atom] ; property atom
+ [8 nil])
+ 3)
(X-Event-define X-ColormapNotify "xcolormap" (nil nil window colormap new
state)
- [ "ColormapNotify"
- ([1 integerp] ; detail
- [2 integerp] ; sequence
- [4 :X-Win] ; window
- [4 integerp] ; colormap
- [1 booleanp] ; new
- [1 booleanp] ; state
- [18 nil])
- 2 ])
+ "ColormapNotify"
+ ([1 integerp] ; detail
+ [2 integerp] ; sequence
+ [4 :X-Win] ; window
+ [4 integerp] ; colormap
+ [1 booleanp] ; new
+ [1 booleanp] ; state
+ [18 nil])
+ 2)
(X-Event-define X-ClientMessage "xclient" (nil window atom msg)
- [ "ClientMessage"
- ([1 length-1] ; format
- [2 integerp] ; sequence number
- [4 :X-Win] ; window
- [4 :X-Atom] ; atom
- ;; This reads in the correct number of integers of a type
- ;; specified by the format which is 8, 16, or 32.
- [(/ 20 (/ length-1 8)) ( [ (/ length-1 8) integerp ] ) ] )
- 1 ])
+ "ClientMessage"
+ ([1 length-1] ; format
+ [2 integerp] ; sequence number
+ [4 :X-Win] ; window
+ [4 :X-Atom] ; atom
+ ;; This reads in the correct number of integers of a type
+ ;; specified by the format which is 8, 16, or 32.
+ [(/ 20 (/ length-1 8)) ( [ (/ length-1 8) integerp ] ) ] )
+ 1)
(X-Event-define X-MappingNotify "xmapping" (nil nil request first-keycode
count)
- [ "MappingNotify"
- ([1 integerp]
- [2 integerp]
- [1 integerp] ; request
- [1 integerp] ; firstKeyCode
- [1 integerp] ; count
- [25 nil])
- nil ])
+ "MappingNotify"
+ ([1 integerp]
+ [2 integerp]
+ [1 integerp] ; request
+ [1 integerp] ; firstKeyCode
+ [1 integerp] ; count
+ [25 nil]))
;; error event
(X-Event-define 0 "xerror" (code nil resourceid min-op maj-op)
- ["XError"
- ([1 integerp] ; err code
- [2 integerp] ; sequence
- [4 integerp] ; id
- [2 integerp] ; minor opcode
- [1 integerp] ; major opcode
- [21 nil])])
+ "XError"
+ ([1 integerp] ; err code
+ [2 integerp] ; sequence
+ [4 integerp] ; id
+ [2 integerp] ; minor opcode
+ [1 integerp] ; major opcode
+ [21 nil]))
;;; All receive message types will exclude the first byte which IDs it.
;;
@@ -1181,19 +1189,33 @@
obj))
;;; Events queue support
+(defun X-Dpy-default-events-dispatcher (xdpy xev)
+ "Default events dispatcher."
+ (let ((win-ev (X-Event-win-event xev)))
+ (when (X-Win-p win-ev)
+ ;; First run display handlers
+ (when (X-Dpy-event-handlers xdpy)
+ (X-Dpy-EventHandler-runall xdpy xev))
+
+ ;; Then run WIN specific handlers
+ (when (X-Win-event-handlers win-ev)
+ ;; WIN has its own event handlers
+ (X-Win-EventHandler-runall win-ev xev)))))
+
(defun X-Dpy-event-dispatch (xev)
"Dispatch event XEV."
- (let ((win (X-Event-win xev))
- (xdpy (X-Event-dpy xev)))
-
- (X-Dpy-log xdpy 'x-event "Ready to dispatch event: %S for win %S"
- '(X-Event-name xev) '(if (X-Win-p (X-Event-win xev))
- (X-Win-id (X-Event-win xev))
- (X-Event-win xev)))
+ (let ((xdpy (X-Event-dpy xev)))
+ (X-Dpy-log xdpy 'x-event "Got X event: %S for win %S / %S"
+ '(X-Event-name xev)
+ '(if (X-Win-p (X-Event-win-event xev))
+ (X-Win-id (X-Event-win-event xev))
+ (X-Event-win-event xev))
+ '(if (X-Win-p (X-Event-win xev))
+ (X-Win-id (X-Event-win xev))
+ (X-Event-win xev)))
(when (X-Dpy-events-dispatcher xdpy)
- (funcall (X-Dpy-events-dispatcher xdpy) xdpy win xev))
- ))
+ (funcall (X-Dpy-events-dispatcher xdpy) xdpy xev))))
(defsubst X-Dpy-event-enqueue (event)
"Enqueue EVENT in XDPY's events queue."
|