XUI_Gesture_CAPTURED = {},\r
XUI_Gesture_DEFAULTS = {};\r
\r
-// AbstractUINode に移動\r
\r
-var XUI_Gesture = Hammer = X_Class_create(\r
- 'X.UI.Gesture',\r
- X_Class.NONE,\r
- {\r
- uinodeRoot : null,\r
- uinode : null,\r
- options : null,\r
- \r
- activated : null,\r
- types : null,\r
-\r
- triggered : null,\r
- canceled : null,\r
- \r
- currentName : '',\r
- startEvent : null,\r
- lastEvent : null,\r
- lastMoveEvent : null,\r
- \r
- 'Constructor' : function( uinodeRoot, uinode, type, opt_options ){\r
- this.uinodeRoot = uinodeRoot;\r
- this.uinode = uinode;\r
- this.options = X_Object_override( X_Object_copy( XUI_Gesture_DEFAULTS ), opt_options );\r
- \r
- this.triggered = {};\r
- this.canceled = {};\r
+function XUI_Gesture_trigger( uinode, type, hammerEvent ){\r
+ if( !uinode.gestureTypes[ type ] ) return X_CALLBACK_NONE;\r
+ hammerEvent = X_Object_copy( hammerEvent );\r
+ hammerEvent.type = type;\r
+ return uinode[ 'dispatch' ]( hammerEvent ) || X_CALLBACK_NONE;\r
+};\r
\r
- uinode[ 'listen' ]( XUI_Event._POINTER_DOWN, this, XUI_Gesture_handleEvent );\r
- \r
- this[ 'listen' ]( type );\r
- },\r
+function XUI_$UINodeBase_listen( type, arg1, arg2, arg3 ){\r
+ var events, gestures, i, g;\r
+ \r
+ if( XUI_Event._START_POINTER <= type && type <= XUI_Event._END_POINTER ){\r
+ if( this.phase < 3 ){\r
+ if( !( events = this.reserveEvents ) ) this.reserveEvents = events = [];\r
+ events[ events.length ] = [ type, arg1, arg2, arg3 ];\r
+ return this;\r
+ };\r
\r
- trigger : function( type, gesture ){\r
- var e;\r
- \r
- if( !this.types[ type ] ) return X_CALLBACK_NONE;\r
- e = X_Object_copy( gesture );\r
- e.type = type;\r
- return this.uinode[ 'dispatch' ]( e ) || X_CALLBACK_NONE;\r
- },\r
+ if( this[ 'listening' ]( type, arg1, arg2, arg3 ) ){\r
+ return this;\r
+ };\r
\r
- listen : function( type ){\r
- var gestures = XUI_Gesture_LIST,\r
- i = gestures.length, g;\r
-\r
- for( ; i; ){\r
+ if( XUI_Event._START_XUI_EVENT < type && type < XUI_Event._END_XUI_EVENT ){\r
+ gestures = XUI_Gesture_LIST;\r
+ for( i = gestures.length; i; ){\r
g = gestures[ --i ];\r
if( g.startID <= type && type <= g.endID ){\r
- if( !this.activated ) this.activated = {};\r
- if( !this.types ) this.types = {};\r
- this.activated[ g.name ] = this.types[ type ] = 1;\r
+ if( !this.gestureActivated ){\r
+ this.gestureOptions = XUI_Gesture_DEFAULTS; //X_Object_override( X_Object_copy( XUI_Gesture_DEFAULTS ), opt_options );\r
+ this.gestureActivated = {};\r
+ this.gestureTypes = {};\r
+ this.gestureTriggered = {};\r
+ this.gestureCanceled = {};\r
+ };\r
+ if( X_Object_isEmpty( this.gestureActivated ) ){\r
+ this[ 'listen' ]( XUI_Event._POINTER_DOWN, this, XUI_Gesture_handleEvent );\r
+ };\r
+ this.gestureActivated[ g.name ] = this.gestureTypes[ type ] = true;\r
break;\r
};\r
};\r
- },\r
- \r
- unlisten : function( type ){\r
- var gestures = XUI_Gesture_LIST,\r
- i = gestures.length,\r
- active = this.activated, g;\r
+ } else\r
+ if( XUI_EVENT_COUNTER[ type ] ){\r
+ ++XUI_EVENT_COUNTER[ type ];\r
+ } else {\r
+ XUI_EVENT_COUNTER[ type ] = 1; \r
+ XUI_xnodeIneraction[ 'listen' ]( XUI_Event.IdToName[ type ], X_UI_eventRellay );\r
+ };\r
+ };\r
+ \r
+ return X_EventDispatcher_listen.apply( this, arguments );\r
+};\r
\r
- if( !active ) return;\r
- for( ; i; ){\r
- g = gestures[ --i ];\r
- if( g.startID <= type && type <= g.endID ){\r
- if( active[ g.name ] ){\r
- if( this.types[ type ] ) delete this.types[ type ];\r
- for( i = g.startID; i <= g.endID; ++i ){\r
- if( this.types[ i ] ) return;\r
+function XUI_$UINodeBase_unlisten( type, arg1, arg2, arg3 ){\r
+ var events, i, ev, gestures, active, g, f;\r
+ \r
+ if( XUI_Event._START_POINTER <= type && type <= XUI_Event._END_POINTER ){\r
+ if( this.phase < 3 ){\r
+ if( !( events = this.reserveEvents ) ) return this;\r
+ for( i = events.length; i; ){\r
+ ev = events[ --i ];\r
+ if( ev[ 0 ] === type && ev[ 1 ] === arg1 && ev[ 2 ] === arg2 && ev[ 3 ] === arg3 ){\r
+ events.split( i, 1 );\r
+ return this;\r
+ };\r
+ }; \r
+ return this;\r
+ };\r
+\r
+ if( !this[ 'listening' ]( type, arg1, arg2, arg3 ) ){\r
+ return this;\r
+ };\r
+ \r
+ if( XUI_Event._START_XUI_EVENT < type && type < XUI_Event._END_XUI_EVENT ){\r
+ if( active = this.gestureActivated ){\r
+ gestures = XUI_Gesture_LIST;\r
+ for( i = gestures.length ; i; ){\r
+ g = gestures[ --i ];\r
+ if( g.startID <= type && type <= g.endID ){\r
+ if( active[ g.name ] ){\r
+ if( this.gestureTypes[ type ] ) delete this.gestureTypes[ type ];\r
+ for( i = g.startID; i <= g.endID; ++i ){\r
+ if( this.gestureTypes[ i ] ){\r
+ f = true;\r
+ break;\r
+ };\r
+ };\r
+ if( !f ){\r
+ delete active[ g.name ];\r
+ \r
+ if( X_Object_isEmpty( active ) ){\r
+ this[ 'unlisten' ]( XUI_Event._POINTER_DOWN, this, XUI_Gesture_handleEvent );\r
+ //delete this.gestureTriggered;\r
+ //delete this.gestureCanceled;\r
+ //delete this.gestureTypes;\r
+ //delete this.gestureActivated;\r
+ };\r
+ };\r
};\r
- delete active[ g.name ];\r
+ break;\r
};\r
- break;\r
- };\r
+ }; \r
};\r
- }\r
- }\r
-);\r
+ } else {\r
+ if( XUI_EVENT_COUNTER[ type ] === 1 ){\r
+ XUI_xnodeIneraction[ 'unlisten' ]( XUI_Event.IdToName[ type ], X_UI_eventRellay );\r
+ XUI_EVENT_COUNTER[ type ] = 0;\r
+ } else\r
+ if( XUI_EVENT_COUNTER[ type ] ){\r
+ --XUI_EVENT_COUNTER[ type ];\r
+ };\r
+ };\r
+ };\r
+\r
+ return X_EventDispatcher_unlisten.apply( this, arguments );\r
+};\r
\r
function XUI_Gesture_handleEvent( e ){\r
var gestures = XUI_Gesture_LIST,\r
i, p, l, j, captured, ret, activated, gesture, startEv,\r
deltaTime, deltaX, deltaY, velocity, center, startCenter;\r
\r
- if( !isStart && !hammer.startEvent ) return;\r
+ if( !isStart && !hammer.gestureStartEvent ) return;\r
\r
-if( type === XUI_Event.POINTER_OUT ) console.log( 'canceled ...' + e.button )\r
+if( type === XUI_Event.POINTER_OUT ) console.log( 'gestureCanceled ...' + e.button )\r
\r
if( isEnd ){\r
if( XUI_Gesture_POINTERS[ uid ] ){\r
\r
// because touchend has no touches, and we often want to use these in our gestures,\r
// we send the last move event as our eventData in touchend\r
- ( isEnd && hammer.lastMoveEvent ) ? ( e = hammer.lastMoveEvent ) : ( hammer.lastMoveEvent = e ); // store the last move event\r
+ ( isEnd && hammer.gestureLastMoveEvent ) ? ( e = hammer.gestureLastMoveEvent ) : ( hammer.gestureLastMoveEvent = e ); // store the last move event\r
\r
hammerEvent = X_Object_copy( e );\r
hammerEvent.touches = touches;\r
\r
- if( isStart && !hammer.startEvent ){\r
+ if( isStart && !hammer.gestureStartEvent ){\r
console.log( '=- add -=' );\r
// already busy with a Hammer.gesture detection on an element\r
- hammer.startEvent = hammerEvent;\r
- hammer.uinodeRoot[ 'listen' ]( [ XUI_Event._POINTER_MOVE, XUI_Event._POINTER_UP, XUI_Event._POINTER_CANCEL, XUI_Event.POINTER_OUT ], hammer, XUI_Gesture_handleEvent ); \r
+ hammer.gestureStartEvent = hammerEvent;\r
+ XUI_rootData[ 'listen' ]( [ XUI_Event._POINTER_MOVE, XUI_Event._POINTER_UP, XUI_Event._POINTER_CANCEL, XUI_Event.POINTER_OUT ], hammer, XUI_Gesture_handleEvent ); \r
};\r
\r
- startEv = hammer.startEvent;\r
+ startEv = hammer.gestureStartEvent;\r
\r
\r
// if the touches change, set the new touches over the startEvent touches\r
scale : XUI_GestureUtils.getScale( startEv.touches, touches ),\r
rotation : XUI_GestureUtils.getRotation( startEv.touches, touches ),\r
\r
- startEvent : startEv\r
+ gestureStartEvent : startEv\r
});\r
\r
// store as previous event event\r
- hammer.lastEvent = hammerEvent;\r
- activated = hammer.activated;\r
+ hammer.gestureLastEvent = hammerEvent;\r
+ activated = hammer.gestureActivated;\r
console.log( '... ' );\r
// call Hammer.gesture handlers\r
for( i = 0, l = gestures.length; i < l; ++i ){\r
gesture = gestures[ i ];\r
\r
- if( activated[ gesture.name ] && !hammer.canceled[ gesture.name ] ){\r
+ if( activated[ gesture.name ] && !hammer.gestureCanceled[ gesture.name ] ){\r
( console.log( '... ' + i + ' ' + gesture.name ) );\r
// if a handler returns false, we stop with the detection\r
( ret |= ( gesture.handler( hammerEvent, hammer ) || X_CALLBACK_NONE ) );\r
\r
if( isEnd ){\r
console.log( '=- clear -=' );\r
- hammer.uinodeRoot[ 'unlisten' ]( [ XUI_Event._POINTER_MOVE, XUI_Event._POINTER_UP, XUI_Event._POINTER_CANCEL, XUI_Event.POINTER_OUT ], hammer, XUI_Gesture_handleEvent );\r
+ XUI_rootData[ 'unlisten' ]( [ XUI_Event._POINTER_MOVE, XUI_Event._POINTER_UP, XUI_Event._POINTER_CANCEL, XUI_Event.POINTER_OUT ], hammer, XUI_Gesture_handleEvent );\r
\r
hammer.previous = {\r
- currentName : hammer.currentName,\r
- startEvent : hammer.startEvent,\r
- lastEvent : hammer.lastEvent,\r
- lastMoveEvent : hammer.lastMoveEvent\r
+ gestureCurrentName : hammer.gestureCurrentName,\r
+ gestureStartEvent : hammer.gestureStartEvent,\r
+ gestureLastEvent : hammer.gestureLastEvent,\r
+ gestureLastMoveEvent : hammer.gestureLastMoveEvent\r
};\r
\r
- X_Object_clear( hammer.triggered );\r
- X_Object_clear( hammer.canceled );\r
+ X_Object_clear( hammer.gestureTriggered );\r
+ X_Object_clear( hammer.gestureCanceled );\r
\r
- delete hammer.currentName;\r
- delete hammer.startEvent;\r
- delete hammer.lastEvent;\r
- delete hammer.lastMoveEvent;\r
+ delete hammer.gestureCurrentName;\r
+ delete hammer.gestureStartEvent;\r
+ delete hammer.gestureLastEvent;\r
+ delete hammer.gestureLastMoveEvent;\r
\r
ret |= X_CALLBACK_RELEASE_POINTER;\r
};\r
prevent_mouseevents : false\r
},\r
handler : function( e, hammer ){\r
- if( hammer.options.prevent_mouseevents && e[ 'pointerType' ] === 'mouse' ){\r
+ if( hammer.gestureOptions.prevent_mouseevents && e[ 'pointerType' ] === 'mouse' ){\r
return X_CALLBACK_STOP_NOW;\r
};\r
\r
- //hammer.options.prevent_default && e.preventDefault();\r
+ //hammer.gestureOptions.prevent_default && e.preventDefault();\r
\r
- return e.type === XUI_Event._POINTER_DOWN && hammer.trigger( XUI_Event.TOUCH, e );\r
+ return e.type === XUI_Event._POINTER_DOWN && XUI_Gesture_trigger( hammer, XUI_Event.TOUCH, e );\r
}\r
},\r
\r
\r
// current gesture isnt drag, but dragged is true\r
// this means an other gesture is busy. now call dragend\r
- if( hammer.currentName !== transform.name && hammer.triggered[ transform.name ] ){\r
- ret = hammer.trigger( XUI_Event.TRANSFORM_END, e );\r
- delete hammer.triggered[ transform.name ];\r
+ if( hammer.gestureCurrentName !== transform.name && hammer.gestureTriggered[ transform.name ] ){\r
+ ret = XUI_Gesture_trigger( hammer, XUI_Event.TRANSFORM_END, e );\r
+ delete hammer.gestureTriggered[ transform.name ];\r
return ret;\r
};\r
\r
if( e.touches.length < 2 ) return;\r
\r
// prevent default when two fingers are on the screen\r
- //hammer.options.transform_always_block && e.preventDefault();\r
+ //hammer.gestureOptions.transform_always_block && e.preventDefault();\r
\r
switch( e.type ){\r
case XUI_Event._POINTER_DOWN :\r
- //hammer.triggered[ transform.name ] = false;\r
+ //hammer.gestureTriggered[ transform.name ] = false;\r
break;\r
\r
case XUI_Event._POINTER_MOVE:\r
\r
// when the distance we moved is too small we skip this gesture\r
// or we can be already in dragging\r
- if( scale_threshold < hammer.options.transform_min_scale && rotation_threshold < hammer.options.transform_min_rotation ) return;\r
+ if( scale_threshold < hammer.gestureOptions.transform_min_scale && rotation_threshold < hammer.gestureOptions.transform_min_rotation ) return;\r
\r
// we are transforming!\r
- hammer.currentName = transform.name;\r
+ hammer.gestureCurrentName = transform.name;\r
\r
// first time, trigger dragstart event\r
- if( !hammer.triggered[ transform.name ] ){\r
- ret = hammer.trigger( XUI_Event.TRANSFORM_START, e );\r
+ if( !hammer.gestureTriggered[ transform.name ] ){\r
+ ret = XUI_Gesture_trigger( hammer, XUI_Event.TRANSFORM_START, e );\r
if( ret & X_CALLBACK_PREVENT_DEFAULT ){\r
- hammer.canceled[ transform.name ] = true;\r
+ hammer.gestureCanceled[ transform.name ] = true;\r
break;\r
};\r
- hammer.triggered[ transform.name ] = true;\r
+ hammer.gestureTriggered[ transform.name ] = true;\r
break;\r
};\r
\r
- ret |= hammer.trigger( XUI_Event.TRANSFORM, e );\r
+ ret |= XUI_Gesture_trigger( hammer, XUI_Event.TRANSFORM, e );\r
// basic transform event\r
\r
// trigger rotate event\r
- if( hammer.options.transform_min_rotation < rotation_threshold ){\r
- ret |= hammer.trigger( XUI_Event.ROTATE, e );\r
+ if( hammer.gestureOptions.transform_min_rotation < rotation_threshold ){\r
+ ret |= XUI_Gesture_trigger( hammer, XUI_Event.ROTATE, e );\r
};\r
\r
// trigger pinch event\r
- if( scale_threshold > hammer.options.transform_min_scale ){\r
- ret |= hammer.trigger( XUI_Event.PINCH, e );\r
- ret |= hammer.trigger( e.scale < 1 ? XUI_Event.PINCH_IN : XUI_Event.PINCH_OUT, e );\r
+ if( scale_threshold > hammer.gestureOptions.transform_min_scale ){\r
+ ret |= XUI_Gesture_trigger( hammer, XUI_Event.PINCH, e );\r
+ ret |= XUI_Gesture_trigger( hammer, e.scale < 1 ? XUI_Event.PINCH_IN : XUI_Event.PINCH_OUT, e );\r
};\r
break;\r
\r
case XUI_Event._POINTER_CANCEL :\r
case XUI_Event._POINTER_UP :\r
// trigger dragend\r
- ret = hammer.triggered[ transform.name ] && hammer.trigger( XUI_Event.TRANSFORM_END, e );\r
- hammer.triggered[ transform.name ] = false;\r
+ ret = hammer.gestureTriggered[ transform.name ] && XUI_Gesture_trigger( hammer, XUI_Event.TRANSFORM_END, e );\r
+ hammer.gestureTriggered[ transform.name ] = false;\r
break;\r
};\r
return ret;\r
\r
// current gesture isnt drag, but dragged is true\r
// this means an other gesture is busy. now call dragend\r
- if( hammer.currentName !== drag.name && hammer.triggered[ drag.name ] ){\r
- ret = hammer.trigger( XUI_Event.DRAG_END, e );\r
- hammer.triggered[ drag.name ] = false;\r
+ if( hammer.gestureCurrentName !== drag.name && hammer.gestureTriggered[ drag.name ] ){\r
+ ret = XUI_Gesture_trigger( hammer, XUI_Event.DRAG_END, e );\r
+ hammer.gestureTriggered[ drag.name ] = false;\r
return ret;\r
};\r
\r
// max touches\r
- if( 0 < hammer.options.drag_max_touches && hammer.options.drag_max_touches < e.touches.length ) return;\r
+ if( 0 < hammer.gestureOptions.drag_max_touches && hammer.gestureOptions.drag_max_touches < e.touches.length ) return;\r
\r
switch( e.type ){\r
case XUI_Event._POINTER_DOWN :\r
- hammer.triggered[ drag.name ] = false;\r
+ hammer.gestureTriggered[ drag.name ] = false;\r
break;\r
\r
case XUI_Event._POINTER_MOVE :\r
// when the distance we moved is too small we skip this gesture\r
// or we can be already in dragging\r
- if( e.distance < hammer.options.drag_min_distance && hammer.currentName !== drag.name ) return;\r
+ if( e.distance < hammer.gestureOptions.drag_min_distance && hammer.gestureCurrentName !== drag.name ) return;\r
\r
// we are dragging!\r
- hammer.currentName = drag.name;\r
+ hammer.gestureCurrentName = drag.name;\r
\r
// lock drag to axis?\r
- if( hammer.lastEvent.drag_locked_to_axis || ( hammer.options.drag_lock_to_axis && hammer.options.drag_lock_min_distance <= e.distance ) ){\r
+ if( hammer.gestureLastEvent.drag_locked_to_axis || ( hammer.gestureOptions.drag_lock_to_axis && hammer.gestureOptions.drag_lock_min_distance <= e.distance ) ){\r
e.drag_locked_to_axis = true;\r
};\r
- last_direction = hammer.lastEvent.direction;\r
+ last_direction = hammer.gestureLastEvent.direction;\r
if( e.drag_locked_to_axis && last_direction !== e.direction ){\r
// keep direction on the axis that the drag gesture started on\r
e.direction = XUI_GestureUtils.isVertical( last_direction ) ?\r
ret = X_CALLBACK_NONE;\r
\r
// first time, trigger dragstart event\r
- if( !hammer.triggered[ drag.name ] ){\r
- ret = hammer.trigger( XUI_Event.DRAG_START, e );\r
+ if( !hammer.gestureTriggered[ drag.name ] ){\r
+ ret = XUI_Gesture_trigger( hammer, XUI_Event.DRAG_START, e );\r
//if( ret & X_CALLBACK_PREVENT_DEFAULT ){\r
- // hammer.canceled[ drag.name ] = true;\r
+ // hammer.gestureCanceled[ drag.name ] = true;\r
// break;\r
//};\r
ret |= X_CALLBACK_CAPTURE_POINTER;\r
console.log( '----- drag start ....' + e.type );\r
- hammer.triggered[ drag.name ] = true;\r
+ hammer.gestureTriggered[ drag.name ] = true;\r
break;\r
};\r
\r
//console.log( '----- drag ....' + e.type );\r
// trigger normal event\r
- ret = hammer.trigger( XUI_Event.DRAG, e ) | X_CALLBACK_CAPTURE_POINTER;\r
+ ret = XUI_Gesture_trigger( hammer, XUI_Event.DRAG, e ) | X_CALLBACK_CAPTURE_POINTER;\r
\r
// direction event, like dragdown\r
- ret |= hammer.trigger(\r
+ ret |= XUI_Gesture_trigger( hammer,\r
e.direction === 'up' ?\r
XUI_Event.DRAG_UP :\r
e.direction === 'down' ?\r
\r
// block the browser events\r
/* (\r
- ( hammer.options.drag_block_vertical && XUI_GestureUtils.isVertical( e.direction ) ) ||\r
- ( hammer.options.drag_block_horizontal && !XUI_GestureUtils.isVertical( e.direction ) )\r
+ ( hammer.gestureOptions.drag_block_vertical && XUI_GestureUtils.isVertical( e.direction ) ) ||\r
+ ( hammer.gestureOptions.drag_block_horizontal && !XUI_GestureUtils.isVertical( e.direction ) )\r
) && e.preventDefault(); */\r
break;\r
\r
case XUI_Event._POINTER_CANCEL :\r
case XUI_Event._POINTER_UP:\r
// trigger dragend\r
- if( hammer.triggered[ drag.name ] ){\r
- ret = hammer.trigger( XUI_Event.DRAG_END, e ) | X_CALLBACK_CAPTURE_POINTER;\r
+ if( hammer.gestureTriggered[ drag.name ] ){\r
+ ret = XUI_Gesture_trigger( hammer, XUI_Event.DRAG_END, e ) | X_CALLBACK_CAPTURE_POINTER;\r
console.log( '----- drag end ....' + e.type );\r
- hammer.triggered[ drag.name ] = false;\r
+ hammer.gestureTriggered[ drag.name ] = false;\r
};\r
break;\r
};\r
// previous gesture, for the double tap since these are two different gesture detections\r
var prev = hammer.previous;\r
\r
- if( e.type === XUI_Event._POINTER_MOVE && hammer.options.tap_max_distance < e.distance ){\r
- hammer.canceled[ 'tap' ] = true;\r
+ if( e.type === XUI_Event._POINTER_MOVE && hammer.gestureOptions.tap_max_distance < e.distance ){\r
+ hammer.gestureCanceled[ 'tap' ] = true;\r
};\r
if( e.type === XUI_Event._POINTER_UP ){\r
// when the touchtime is higher then the max touch time\r
// or when the moving distance is too much\r
- if( hammer.options.tap_max_touchtime < e.deltaTime || hammer.options.tap_max_distance < e.distance ) return;\r
+ if( hammer.gestureOptions.tap_max_touchtime < e.deltaTime || hammer.gestureOptions.tap_max_distance < e.distance ) return;\r
\r
// check if double tap\r
- if( prev && prev.currentName === 'tap' && ( e.timestamp - prev.lastEvent.timestamp ) < hammer.options.doubletap_interval && e.distance < hammer.options.doubletap_distance ){\r
- return hammer.trigger( XUI_Event.DOUBLE_TAP, e );\r
+ if( prev && prev.gestureCurrentName === 'tap' && ( e.timestamp - prev.gestureLastEvent.timestamp ) < hammer.gestureOptions.doubletap_interval && e.distance < hammer.gestureOptions.doubletap_distance ){\r
+ return XUI_Gesture_trigger( hammer, XUI_Event.DOUBLE_TAP, e );\r
} else\r
// do a single tap\r
- if( hammer.options.tap_always ){\r
- //hammer.currentName = 'tap';\r
+ if( hammer.gestureOptions.tap_always ){\r
+ hammer.gestureCurrentName = 'tap';\r
console.log( 'tap! ' + e.deltaTime + 'ms ' + e.type );\r
- return hammer.trigger( XUI_Event.TAP, e );\r
+ return XUI_Gesture_trigger( hammer, XUI_Event.TAP, e );\r
};\r
};\r
}\r