OSDN Git Service

bug fixes superCall, merge X.UI.Gesture to X.UI.AbstructUINode.
[pettanr/clientJs.git] / 0.6.x / js / 20_ui / 05_XUI_Gesture.js
index f8b9535..f22672f 100644 (file)
@@ -132,86 +132,122 @@ var XUI_Gesture_POINTERS = {},
        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
@@ -226,9 +262,9 @@ function XUI_Gesture_handleEvent( e ){
                        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
@@ -263,19 +299,19 @@ if( type === XUI_Event.POINTER_OUT ) console.log( 'canceled ...' + e.button )
 \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
@@ -317,18 +353,18 @@ if( type === XUI_Event.POINTER_OUT ) console.log( 'canceled ...' + e.button )
                                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
@@ -363,22 +399,22 @@ if( type === XUI_Event.POINTER_OUT ) console.log( 'canceled ...' + e.button )
 \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
@@ -409,13 +445,13 @@ var XUI_Gesture_LIST = [
                        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
@@ -445,9 +481,9 @@ var XUI_Gesture_LIST = [
                        \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
@@ -455,11 +491,11 @@ var XUI_Gesture_LIST = [
                        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
@@ -468,34 +504,34 @@ var XUI_Gesture_LIST = [
 \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
@@ -503,8 +539,8 @@ var XUI_Gesture_LIST = [
                                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
@@ -546,33 +582,33 @@ var XUI_Gesture_LIST = [
 \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
@@ -583,24 +619,24 @@ var XUI_Gesture_LIST = [
                                        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
@@ -613,8 +649,8 @@ var XUI_Gesture_LIST = [
 \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
@@ -623,10 +659,10 @@ var XUI_Gesture_LIST = [
                                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
@@ -655,23 +691,23 @@ var XUI_Gesture_LIST = [
                        // 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