dix: take grabs into account for XI_Enter/Leave events.
This commit is contained in:
parent
1815defdb2
commit
10b5e98101
16
dix/events.c
16
dix/events.c
|
@ -4182,7 +4182,6 @@ DeviceEnterLeaveEvent(
|
||||||
{
|
{
|
||||||
GrabPtr grab = mouse->deviceGrab.grab;
|
GrabPtr grab = mouse->deviceGrab.grab;
|
||||||
xXIEnterEvent *event;
|
xXIEnterEvent *event;
|
||||||
Mask mask;
|
|
||||||
int filter;
|
int filter;
|
||||||
int btlen, len, i;
|
int btlen, len, i;
|
||||||
DeviceIntPtr kbd;
|
DeviceIntPtr kbd;
|
||||||
|
@ -4223,19 +4222,22 @@ DeviceEnterLeaveEvent(
|
||||||
|
|
||||||
FixUpEventFromWindow(mouse, (xEvent*)event, pWin, None, FALSE);
|
FixUpEventFromWindow(mouse, (xEvent*)event, pWin, None, FALSE);
|
||||||
|
|
||||||
|
|
||||||
if (!GetWindowXI2Mask(mouse, pWin, (xEvent*)event))
|
|
||||||
return;
|
|
||||||
|
|
||||||
filter = GetEventFilter(mouse, (xEvent*)event);
|
filter = GetEventFilter(mouse, (xEvent*)event);
|
||||||
mask = 0x0; /* FIXME: we should handle grabs, once we can */
|
|
||||||
|
|
||||||
if (grab)
|
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,
|
TryClientEvents(rClient(grab), mouse, (xEvent*)event, 1, mask,
|
||||||
filter, grab);
|
filter, grab);
|
||||||
else
|
} else {
|
||||||
|
if (!GetWindowXI2Mask(mouse, pWin, (xEvent*)event))
|
||||||
|
return;
|
||||||
DeliverEventsToWindow(mouse, pWin, (xEvent*)event, 1, filter,
|
DeliverEventsToWindow(mouse, pWin, (xEvent*)event, 1, filter,
|
||||||
NullGrab);
|
NullGrab);
|
||||||
|
}
|
||||||
xfree(event);
|
xfree(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue