This repository was archived by the owner on Feb 11, 2021. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +24
-15
lines changed Expand file tree Collapse file tree 3 files changed +24
-15
lines changed Original file line number Diff line number Diff line change @@ -197,15 +197,11 @@ var dispatcher = {
197
197
} ,
198
198
leaveOut : function ( event ) {
199
199
this . out ( event ) ;
200
- if ( ! this . contains ( event . target , event . relatedTarget ) ) {
201
- this . leave ( event ) ;
202
- }
200
+ this . propagate ( event , this . leave , false ) ;
203
201
} ,
204
202
enterOver : function ( event ) {
205
203
this . over ( event ) ;
206
- if ( ! this . contains ( event . target , event . relatedTarget ) ) {
207
- this . enter ( event ) ;
208
- }
204
+ this . propagate ( event , this . enter , true ) ;
209
205
} ,
210
206
211
207
// LISTENER LOGIC
@@ -314,6 +310,21 @@ var dispatcher = {
314
310
return capture ;
315
311
}
316
312
} ,
313
+ propagate : function ( event , fn , propagateDown ) {
314
+ var target = event . target ;
315
+ var targets = [ ] ;
316
+ while ( ! target . contains ( event . relatedTarget ) && target !== document ) {
317
+ targets . push ( target ) ;
318
+ target = target . parentNode ;
319
+ }
320
+ if ( propagateDown ) {
321
+ targets . reverse ( ) ;
322
+ }
323
+ targets . forEach ( function ( target ) {
324
+ event . target = target ;
325
+ fn . call ( this , event ) ;
326
+ } , this ) ;
327
+ } ,
317
328
setCapture : function ( inPointerId , inTarget ) {
318
329
if ( this . captureInfo [ inPointerId ] ) {
319
330
this . releaseCapture ( inPointerId ) ;
Original file line number Diff line number Diff line change @@ -265,8 +265,7 @@ var touchEvents = {
265
265
out : inPointer ,
266
266
outTarget : inPointer . target
267
267
} ) ;
268
- dispatcher . over ( inPointer ) ;
269
- dispatcher . enter ( inPointer ) ;
268
+ dispatcher . enterOver ( inPointer ) ;
270
269
dispatcher . down ( inPointer ) ;
271
270
} ,
272
271
touchmove : function ( inEvent ) {
@@ -318,8 +317,7 @@ var touchEvents = {
318
317
upOut : function ( inPointer ) {
319
318
if ( ! this . scrolling ) {
320
319
dispatcher . up ( inPointer ) ;
321
- dispatcher . out ( inPointer ) ;
322
- dispatcher . leave ( inPointer ) ;
320
+ dispatcher . leaveOut ( inPointer ) ;
323
321
}
324
322
this . cleanUpPointer ( inPointer ) ;
325
323
} ,
@@ -328,8 +326,7 @@ var touchEvents = {
328
326
} ,
329
327
cancelOut : function ( inPointer ) {
330
328
dispatcher . cancel ( inPointer ) ;
331
- dispatcher . out ( inPointer ) ;
332
- dispatcher . leave ( inPointer ) ;
329
+ dispatcher . leaveOut ( inPointer ) ;
333
330
this . cleanUpPointer ( inPointer ) ;
334
331
} ,
335
332
cleanUpPointer : function ( inPointer ) {
Original file line number Diff line number Diff line change @@ -9,10 +9,11 @@ define(function(require) {
9
9
main : function ( ) {
10
10
return w3cTest ( this . remote , name + '.html' )
11
11
. findById ( 'target0' )
12
- . moveMouseTo ( 50 , 8 )
12
+ . moveMouseTo ( 200 , 10 )
13
13
. end ( )
14
- . findByTagName ( 'body' )
15
- . moveMouseTo ( 50 , 30 )
14
+ . findByCssSelector ( '#target0 div' )
15
+ . moveMouseTo ( 200 , 10 )
16
+ . moveMouseTo ( 200 , 150 )
16
17
. end ( )
17
18
. checkResults ( ) ;
18
19
}
You can’t perform that action at this time.
0 commit comments