diff --git dix/events.c dix/events.c
index 7b698a0..37c9220 100644
--- dix/events.c
+++ dix/events.c
@@ -2414,14 +2414,12 @@ DeliverDeviceEvents(WindowPtr pWin, xEvent *xE, GrabPtr grab,
                 if (deliveries > 0)
                     return deliveries;
             }
-
-            if ((deliveries < 0) ||
-                    (pWin == stopAt) ||
-                    (inputMasks &&
-                     (filter & inputMasks->dontPropagateMask[mskidx])))
-                return 0;
         }
 
+        if ((deliveries < 0) || (pWin == stopAt) ||
+            (inputMasks && (filter & inputMasks->dontPropagateMask[mskidx])))
+            return 0;
+
         if (dev->isMaster && dev->coreEvents)
         {
 
@@ -2439,12 +2437,11 @@ DeliverDeviceEvents(WindowPtr pWin, xEvent *xE, GrabPtr grab,
                     if (deliveries > 0)
                         return deliveries;
                 }
-
-                if ((deliveries < 0) ||
-                        (pWin == stopAt) ||
-                        (filter & wDontPropagateMask(pWin)))
-                    return 0;
             }
+
+            if ((deliveries < 0) || (pWin == stopAt) ||
+                (filter & wDontPropagateMask(pWin)))
+                return 0;
         }
 
         child = pWin->drawable.id;
