diff options
author | Peter Hutterer <peter@cs.unisa.edu.au> | 2007-09-26 18:04:59 +0930 |
---|---|---|
committer | Daniel Stone <daniel@fooishbar.org> | 2007-10-28 17:19:10 +0200 |
commit | ee3aa948eb8ed181d037294ed87df6ceec81684e (patch) | |
tree | 1d747e456a26c19510d5c8bab76bad628de0b317 /xkb/xkbAccessX.c | |
parent | d3588a0aee33fbd233082f881c0d37152c6d4d8b (diff) |
xkb: Unwrap properly in ProcessPointerEvent.
Instead of hardcoding CoreProcessPointerEvent, actually try to unwrap properly
and then call the unwrapped processInputProc. Seems to be a better idea,
especially since it makes stuff actually work...
(cherry picked from commit 8f9bf927e1beecf9b9ec8877131ec12c765e4d84)
Diffstat (limited to 'xkb/xkbAccessX.c')
-rw-r--r-- | xkb/xkbAccessX.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c index 2954a0c0e..4c6e3d45b 100644 --- a/xkb/xkbAccessX.c +++ b/xkb/xkbAccessX.c @@ -692,6 +692,8 @@ ProcessPointerEvent( register xEvent * xE, DeviceIntPtr dev = (DeviceIntPtr)LookupKeyboardDevice(); XkbSrvInfoPtr xkbi = dev->key->xkbInfo; unsigned changed = 0; +ProcessInputProc backupproc; +xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(mouse); xkbi->shiftKeyCount = 0; xkbi->lastPtrEventTime= xE->u.keyButtonPointer.time; @@ -703,7 +705,26 @@ unsigned changed = 0; xkbi->lockedPtrButtons&= ~(1<<(xE->u.u.detail&0x7)); changed |= XkbPointerButtonMask; } - CoreProcessPointerEvent(xE,mouse,count); + + /* Guesswork. mostly. + * xkb actuall goes through some effort to transparently wrap the + * processInputProcs (see XkbSetExtension). But we all love fun, so the + * previous XKB implementation just hardcoded the CPPE call here instead + * of unwrapping like anybody with any sense of decency would do. + * I got no clue what the correct thing to do is, but my guess is that + * it's not hardcoding. I may be wrong. whatever it is, don't come whining + * to me. I just work here. + * + * Anyway. here's the old call, if you don't like the wrapping, revert it. + * + * CoreProcessPointerEvent(xE,mouse,count); + * + * see. it's still steaming. told you. (whot) + */ + UNWRAP_PROCESS_INPUT_PROC(mouse, xkbPrivPtr, backupproc); + mouse->public.processInputProc(xE, mouse, count); + COND_WRAP_PROCESS_INPUT_PROC(mouse, xkbPrivPtr, + backupproc, xkbUnwrapProc); xkbi->state.ptr_buttons = mouse->button->state; |