 
 			onItem = (item) ->
 				data = item._impl
-				if data.capturePointer & MOVE
+				{capturePointer} = data
+				if capturePointer & (ENTER | EXIT | MOVE)
 					data.pointerMoveFlag = flag
-				if data.capturePointer & (ENTER | EXIT) and not data.pointerHover
+				if capturePointer & (ENTER | EXIT) and not data.pointerHover
 					data.pointerHover = true
 					hoverItems.push item
 					emitSignal item.pointer, 'onEnter', event
-
-				if data.capturePointer & MOVE
+				if capturePointer & MOVE
 					emitSignal item._pointer, 'onMove', event
-				if event._stopPropagation
-					return STOP_PROPAGATION
-				return getEventStatus()
+				if capturePointer & (ENTER | EXIT | MOVE)
+					if event._stopPropagation
+						return STOP_PROPAGATION
+					return getEventStatus()
+				0
 
 			(e) ->
 				event._stopPropagation = false
 				event._checkSiblings = false
 				flag = (flag % 2) + 1
 
-				captureItems MOVE, impl.window, e._x, e._y, onItem
+				captureItems ENTER | EXIT | MOVE, impl.window, e._x, e._y, onItem
 
 				for item in itemsToMove
 					if event._stopPropagation

						itemsToMove.push item
					if event._stopPropagation
						return STOP_PROPAGATION
				return getEventStatus()

			(e) ->
				event._checkSiblings = false

		onRelease: RELEASE = 1 << i++
		onMove: MOVE = 1 << i++
		onWheel: WHEEL = 1 << i++
		onClick: CLICK = 1 << i++
		onEnter: ENTER = 1 << i++
		onExit: EXIT = 1 << i++
		# onDragStart: 1 << i++
		# onDragEnd: 1 << i++
		# onDragEnter: 1 << i++
