diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2009-05-26 11:12:08 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2009-05-27 13:54:18 +1000 |
commit | 10b5e981016132b4c07ad9ce68646d0a385e9c24 (patch) | |
tree | add31bd5c137b80afee938087c60eb9e325fdeb0 | |
parent | 1815defdb2f19e79f4ec0354d188ea763ff1f15e (diff) |
dix: take grabs into account for XI_Enter/Leave events.
-rw-r--r-- | dix/events.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/dix/events.c b/dix/events.c index 6f05272e4..382fd8d06 100644 --- a/dix/events.c +++ b/dix/events.c @@ -4182,7 +4182,6 @@ DeviceEnterLeaveEvent( { GrabPtr grab = mouse->deviceGrab.grab; xXIEnterEvent *event; - Mask mask; int filter; int btlen, len, i; DeviceIntPtr kbd; @@ -4223,19 +4222,22 @@ DeviceEnterLeaveEvent( FixUpEventFromWindow(mouse, (xEvent*)event, pWin, None, FALSE); - - if (!GetWindowXI2Mask(mouse, pWin, (xEvent*)event)) - return; - filter = GetEventFilter(mouse, (xEvent*)event); - mask = 0x0; /* FIXME: we should handle grabs, once we can */ if (grab) + { + Mask mask; + mask = grab->xi2mask[XIAllDevices][type/8] | + grab->xi2mask[XIAllMasterDevices][type/8] | + grab->xi2mask[mouse->id][type/8]; TryClientEvents(rClient(grab), mouse, (xEvent*)event, 1, mask, filter, grab); - else + } else { + if (!GetWindowXI2Mask(mouse, pWin, (xEvent*)event)) + return; DeliverEventsToWindow(mouse, pWin, (xEvent*)event, 1, filter, NullGrab); + } xfree(event); } |