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;
|
||||
}
|
||||
|
||||
if ((deliveries < 0) || (pWin == stopAt) ||
|
||||
(mask & EVENT_DONT_PROPAGATE_MASK))
|
||||
{
|
||||
deliveries = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((deliveries < 0) || (pWin == stopAt) ||
|
||||
(mask & EVENT_DONT_PROPAGATE_MASK))
|
||||
{
|
||||
deliveries = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
child = pWin->drawable.id;
|
||||
|
|
Loading…
Reference in New Issue
Block a user