@@ -5,44 +5,73 @@ var POINTER_TYPE_UNAVAILABLE = "1",
55 POINTER_TYPE_MOUSE = "4" ;
66
77function processEvent ( event , pointerType ) {
8- var prop ,
9- orig = event ;
8+ var propLength ,
9+ i = 0 ,
10+ orig = event ,
11+ mouseProps = $ . event . mouseHooks . props ;
1012
11- event = $ . Event ( pointerType ) ;
13+ event = $ . Event ( pointerType , {
14+ bubbles : true ,
15+ cancelable : true ,
16+ pointerId : 0 ,
17+ width : 0 ,
18+ height : 0 ,
19+ pressure : 0 ,
20+ tiltX : 0 ,
21+ tiltY : 0 ,
22+ pointerType : "" ,
23+ // TODO: properly determine isPrimary
24+ isPrimary : true
25+ } ) ;
1226
13- for ( prop in orig ) {
14- if ( ! ( prop in event ) ) {
15- event [ prop ] = orig [ prop ] ;
16- }
27+ for ( propLength = mouseProps . length ; i < propLength ; i ++ ) {
28+ event [ mouseProps [ i ] ] = orig [ mouseProps [ i ] ] ;
1729 }
1830
19- event . pageX = event . pageX || orig . originalEvent . pageX ;
20- event . pageY = event . pageY || orig . originalEvent . pageY ;
21-
22- // TODO - Actually determine if primary
23- event . isPrimary = true ;
24-
25- if ( orig . type . indexOf ( "mouse" ) != - 1 ) {
31+ if ( orig . type . indexOf ( "mouse" ) !== - 1 ) {
2632 event . pointerId = 1 ;
2733 event . pointerType = POINTER_TYPE_MOUSE ;
2834 // TODO: Don't assume left click
2935 event . button = 0 ;
3036 event . buttons = 1 ;
31- } else if ( orig . type . indexOf ( "touch" ) != - 1 ) {
32- event . pointerId = orig . identifier || 2 ;
37+ } else if ( orig . type . indexOf ( "touch" ) !== - 1 ) {
38+ event . pointerId = orig . pointerId ;
3339 event . pointerType = POINTER_TYPE_TOUCH ;
3440 event . button = 0 ;
3541 event . buttons = 1 ;
36- } else if ( orig . type . indexOf ( "Pointer" ) != - 1 ) {
42+ event . originalEvent = orig ;
43+ } else if ( orig . type . indexOf ( "Pointer" ) !== - 1 ) {
3744 event . pointerId = orig . originalEvent . pointerId ;
3845 event . pointerType = orig . originalEvent . pointerType || POINTER_TYPE_UNAVAILABLE ;
3946 event . button = orig . originalEvent . button ;
4047 event . buttons = orig . originalEvent . buttons ;
48+ event . width = orig . originalEvent . width ;
49+ event . height = orig . originalEvent . height ;
50+ event . pressure = orig . originalEvent . pressure ;
51+ event . tiltX = orig . originalEvent . tiltX ;
52+ event . tiltY = orig . originalEvent . tiltY ;
4153 }
4254
4355 return event ;
4456}
4557
58+ function pointerEventHandler ( event , type ) {
59+ var touch ;
60+
61+ if ( event . type . indexOf ( "touch" ) !== - 1 ) {
62+ touch = event . originalEvent . changedTouches [ 0 ] ;
63+ event . pageX = touch . pageX ;
64+ event . pageY = touch . pageY ;
65+ event . screenX = touch . screenX ;
66+ event . screenY = touch . screenY ;
67+ event . clientX = touch . clientX ;
68+ event . clientY = touch . clientY ;
69+ event . pointerId = touch . identifier ;
70+ }
71+
72+ $ ( event . target ) . trigger ( processEvent ( event , type ) ) ;
73+ }
74+
4675$ . event . special . pointerdown = {
4776 setup : function ( ) {
4877 $ ( this ) . on ( "mousedown touchstart MSPointerDown" , $ . event . special . pointerdown . handler ) ;
@@ -51,8 +80,7 @@ $.event.special.pointerdown = {
5180 $ ( this ) . off ( "mousedown touchstart MSPointerDown" , $ . event . special . pointerdown . handler ) ;
5281 } ,
5382 handler : function ( event ) {
54- event = processEvent ( event , "pointerdown" ) ;
55- $ ( event . target ) . trigger ( event ) ;
83+ pointerEventHandler ( event , "pointerdown" ) ;
5684 }
5785} ;
5886
@@ -64,8 +92,7 @@ $.event.special.pointerup = {
6492 $ ( this ) . off ( "mouseup touchend MSPointerUp" , $ . event . special . pointerup . handler ) ;
6593 } ,
6694 handler : function ( event ) {
67- event = processEvent ( event , "pointerup" ) ;
68- $ ( event . target ) . trigger ( event ) ;
95+ pointerEventHandler ( event , "pointerup" ) ;
6996 }
7097} ;
7198
@@ -77,8 +104,7 @@ $.event.special.pointermove = {
77104 $ ( this ) . off ( "mousemove touchmove MSPointerMove" , $ . event . special . pointermove . handler ) ;
78105 } ,
79106 handler : function ( event ) {
80- event = processEvent ( event , "pointermove" ) ;
81- $ ( event . target ) . trigger ( event ) ;
107+ pointerEventHandler ( event , "pointermove" ) ;
82108 }
83109} ;
84110} ) ( jQuery ) ;
0 commit comments