summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2009-05-26 11:12:08 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2009-05-27 13:54:18 +1000
commit10b5e981016132b4c07ad9ce68646d0a385e9c24 (patch)
treeadd31bd5c137b80afee938087c60eb9e325fdeb0
parent1815defdb2f19e79f4ec0354d188ea763ff1f15e (diff)
dix: take grabs into account for XI_Enter/Leave events.
-rw-r--r--dix/events.c16
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);
}