dix: move delivery stop condition out of event mask
Previously, this was only called if there was a mask match, so even if we had a no-propagate flag set or a stopAt window specified, if no mask triggered on the window we would recurse up to the root window and eventually deliver. Move this, so that the stopAt and do-not-propagate mask is honoured. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
This commit is contained in:
parent
1d01e861b6
commit
47734b2ba2
13
dix/events.c
13
dix/events.c
|
@ -2693,12 +2693,13 @@ DeliverDeviceEvents(WindowPtr pWin, InternalEvent *event, GrabPtr grab,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((deliveries < 0) || (pWin == stopAt) ||
|
}
|
||||||
(mask & EVENT_DONT_PROPAGATE_MASK))
|
|
||||||
{
|
if ((deliveries < 0) || (pWin == stopAt) ||
|
||||||
deliveries = 0;
|
(mask & EVENT_DONT_PROPAGATE_MASK))
|
||||||
break;
|
{
|
||||||
}
|
deliveries = 0;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
child = pWin->drawable.id;
|
child = pWin->drawable.id;
|
||||||
|
|
Loading…
Reference in New Issue