dix: take grabs into account for XI_Enter/Leave events.

This commit is contained in:
Peter Hutterer 2009-05-26 11:12:08 +10:00
parent 1815defdb2
commit 10b5e98101
1 changed files with 9 additions and 7 deletions

View File

@ -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);
}