diff options
-rw-r--r-- | src/PutBEvent.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/PutBEvent.c b/src/PutBEvent.c index 0f9df342..f7b74b31 100644 --- a/src/PutBEvent.c +++ b/src/PutBEvent.c @@ -79,9 +79,22 @@ XPutBackEvent ( register XEvent *event) { int ret; + xEvent wire = {0}; + XEvent lib = {0}; + Status (*fp)(Display *, XEvent *, xEvent *); + int type = event->type & 0177; LockDisplay(dpy); - ret = _XPutBackEvent(dpy, event); + fp = dpy->wire_vec[type]; + if (fp == NULL) + fp = _XEventToWire; + ret = (*fp)(dpy, event, &wire); + if (ret) + { + ret = (*dpy->event_vec[type])(dpy, &lib, &wire); + if (ret) + ret = _XPutBackEvent(dpy, &lib); + } UnlockDisplay(dpy); return ret; } |