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 <[email protected]> --- dix/events.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dix/events.c b/dix/events.c index 9fcd447..05590e2 100644 --- a/dix/events.c +++ b/dix/events.c @@ -2693,12 +2693,13 @@ DeliverDeviceEvents(WindowPtr pWin, InternalEvent *event, GrabPtr grab, break; } - if ((deliveries < 0) || (pWin == stopAt) || + } + + if ((deliveries < 0) || (pWin == stopAt) || (mask & EVENT_DONT_PROPAGATE_MASK)) - { - deliveries = 0; - break; - } + { + deliveries = 0; + break; } child = pWin->drawable.id; -- 1.7.7.1 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
