OSDN Git Service

Version 0.6.64, fixed X.Callback & function-hash, working Touch & Pointer Event.
authoritozyun <itozyun@user.sourceforge.jp>
Tue, 19 Aug 2014 13:43:15 +0000 (22:43 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Tue, 19 Aug 2014 13:43:15 +0000 (22:43 +0900)
13 files changed:
0.6.x/css/xui.css
0.6.x/js/core/01_XUa.js
0.6.x/js/core/03_XCallback.js
0.6.x/js/core/05_XTimer.js
0.6.x/js/core/06_XEventDispatcher.js
0.6.x/js/dom/10_XDom.js
0.6.x/js/dom/11_XDomNode.js
0.6.x/js/dom/12_XDomEvent.js
0.6.x/js/main.js
0.6.x/js/ui/05_XUI_Gesture.js
0.6.x/js/ui/06_AbstractUINode.js
0.6.x/js/ui/20_PageRoot.js
0.6.x/logger.html

index ba028ee..36a29a0 100644 (file)
@@ -79,7 +79,6 @@ html, body {
        .ActiveX-enabled .mouse-operation-catcher {\r
                background-color : #fff;\r
                filter           : alpha( opacity=0 );\r
-               -ms-filter       : alpha( opacity=0 );\r
        }\r
        /*\r
         * ie では、背景を設定しないと、 mousemove が働かない。\r
@@ -99,7 +98,7 @@ html, body {
        left       : 0;\r
        top        : 0;\r
        visibility : hidden;\r
-       z-index    : 99;\r
+       /*z-index    : 99;*/\r
 }\r
 \r
 /*  Scrollbox\r
index ff34297..173748c 100644 (file)
@@ -10,9 +10,12 @@ X.UA = (function( n, undefined ){
                i, j, v;\r
                \r
        console.log( ' userAgent  : ' + dua );\r
+       console.log( '-' );\r
        console.log( ' appVersion : ' + dav );\r
+       console.log( '-' );\r
        console.log( ' platform   : ' + n.platform );\r
-               \r
+       console.log( '-' );\r
+       \r
        if( window.opera ){\r
                i = dua.indexOf( 'Opera' ); // Opera/\r
                j = dua.indexOf( 'Version/' );\r
@@ -125,6 +128,8 @@ X.UA = (function( n, undefined ){
        acme.WebKit = i = parseFloat(dua.split("WebKit\/")[1]) || undefined;\r
        acme.Chrome = parseFloat(dua.split("Chrome\/")[1]) || undefined;\r
 \r
+       console.log( '>>Webkit : ' + acme.WebKit );\r
+\r
        if( i && !acme.Chrome && dua.indexOf( 'Safari' ) !== -1 ){\r
                if( dav.indexOf( 'Version/' ) !== -1 ){\r
                        acme.Safari = parseFloat( dav.split("Version/")[1] );\r
@@ -164,7 +169,7 @@ X.UA = (function( n, undefined ){
        \r
        // Mozilla/5.0 (Android; Linux armv7l; rv:9.0) Gecko/20111216 Firefox/9.0 Fennec/9.0\r
        if( ( i = dua.toLowerCase().indexOf( 'android' ) ) !== -1 ){\r
-               acme.Android = parseFloat( ua.substr( i + 8 ) ) || 1.5;\r
+               acme.Android = parseFloat( dua.substr( i + 8 ) ) || 1.5;\r
                console.log( '>> Android : ' + acme.Android );\r
        } else\r
        if( dua.indexOf( 'iPhone;' ) !== -1 || dua.indexOf( 'iPad;' ) !== -1 || dua.indexOf( 'iPod;' ) !== -1 ){\r
index 772d234..25567fa 100644 (file)
@@ -10,168 +10,182 @@ X.Callback = {
        MONOPOLY         : 16,  // move event を独占する\r
        SYS_CANCEL       : 32 | 4 | 2,\r
        \r
+       _USE_CLOSURE     : false,\r
+       \r
        _LIVE_LIST       : [],\r
        _POOL_LIST       : [],\r
        \r
+       _THIS_FUNC       : 1,\r
+       _HANDLEEVENT     : 2,\r
+       _FUNC_ONLY       : 3,\r
+       \r
        create : function( arg0, arg1, arg2 /* [ listener || ( context + function ) || function ][ args... ] */ ){\r
-               var self  = X.Callback,\r
-                       live  = self._LIVE_LIST,\r
-                       f, listener, context, callback;\r
+               var live = X.Callback._LIVE_LIST,\r
+                       hash = X.Callback._checkCallbackArgs( arg0, arg1, arg2 ),\r
+                       f;\r
                \r
-               if( typeof arg1 === 'function' ){\r
-                       context  = arg0;\r
-                       callback = arg1;\r
-               } else\r
-               if( typeof arg0 === 'function' ){\r
-                       callback = arg0;\r
-                       if( !( arg2 = arg1 ) ) return callback; // function のみの場合 callback オブジェクトを作らない\r
-               } else\r
-               if( arg0 && typeof arg0.handleEvent === 'function' ){\r
-                       listener = arg0;\r
-                       arg2     = arg1;\r
-               } else {\r
-                       var v = '';\r
-                       for( var k in  arg0 ){\r
-                               v += k + '=' + arg0[ k ] + ' ';\r
-                       };\r
-                       alert( 'Callback.create() fail! ' + v );\r
-               };\r
+               if( !hash.k ) return hash;\r
                \r
-               f = self._POOL_LIST.pop();\r
+               f = X.Callback._POOL_LIST.pop();\r
                if( !f ){\r
-                       f = new Function( 'var a=arguments,f=a.callee;f.a=a;return f.c()' ); // f.t=this;\r
-                       f.kill = self._kill;\r
-                       f.same = self._same;\r
+                       f = new Function( 'var a=arguments,f=a.callee;f.a=a;return f._(f)' ); // f.x=this;\r
+                       f[ 'kill' ] = X.Callback._kill;\r
+                       f[ 'same' ] = X.Callback._same;\r
+                       f._ = X.Callback._proxyCallback;\r
                };\r
+               \r
                live[ live.length ] = f;\r
-               if( listener ){\r
-                       f.c        = self._contextCallback;\r
-                       f.listener = listener;\r
-                       f.context  = listener;\r
-                       f.callback = listener.handleEvent;\r
-               } else\r
-               if( context ){\r
-                       f.c        = self._contextCallback;\r
-                       f.context  = context;\r
-                       f.callback = callback;\r
-               } else {\r
-                       f.c        = self._generalCallback;\r
-                       f.callback = callback;\r
+               \r
+               switch( f.k = hash.k ){\r
+                       case X.Callback._THIS_FUNC :\r
+                               f.x = hash.x;\r
+                               f.f = hash.f;\r
+                               break;\r
+                       case X.Callback._HANDLEEVENT :\r
+                               f.x = hash.x;\r
+                               f.f = hash.f;\r
+                               break;\r
+                       case X.Callback._FUNC_ONLY :\r
+                               f.f = hash.f;\r
+                               break;\r
                };\r
 \r
-               if( X.Type.isArray( arg2 ) ){\r
-                       f.add = arg2;\r
-               };\r
+               if( hash.s ) f.s = hash.s;\r
                return f;\r
        },\r
        \r
-       _contextCallback : function(){\r
-               var f = this,\r
-                       a = f.a,\r
-                       s = f.add,\r
-                       c = f.callback,\r
-                       x = f.context,\r
-                       i = 0,\r
-                       ary, r;\r
-               //s && s.push.apply( a, s );\r
-               if( s && s.length ){\r
-                       ary = [];\r
-                       a.length &&\r
-                               (\r
-                                       a.length === 1 ?\r
-                                               ( ary[ 0 ] = a[ 0 ] ) :\r
-                                               ary.push.apply( ary, a )\r
-                               );\r
-                       s.length === 1 ?\r
-                               ( ary[ ary.length ] = s[ 0 ] ) :\r
-                               ary.push.apply( ary, s );\r
-                       a = ary;\r
+       _createClosure : function( obj ){\r
+               return function(){\r
+                       obj.a = arguments;\r
+                       return obj._( obj );\r
+               };\r
+       },\r
+       \r
+       _checkCallbackArgs : function( arg1, arg2, arg3, alt_context ){\r
+               var obj;\r
+               \r
+               if( arg1 && X.Type.isFunction( arg2 ) ){\r
+                       obj  = { x : arg1, f : arg2, k : X.Callback._THIS_FUNC };\r
+               } else\r
+               if( arg1 && X.Type.isFunction( arg1[ 'handleEvent' ] ) ){\r
+                       obj  = { x : arg1, f : arg1[ 'handleEvent' ], k : X.Callback._HANDLEEVENT };\r
+                       arg3 = arg2;\r
+               } else\r
+               if( X.Type.isFunction( arg1 ) ){\r
+                       arg3 = arg2;\r
+                       if( alt_context ){\r
+                               obj  = { x : alt_context, f : arg1, k : X.Callback._THIS_FUNC };\r
+                       } else {\r
+                               obj  = { f : arg1, k : X.Callback._FUNC_ONLY };\r
+                       };\r
+               } else\r
+               if( X.Type.isFunction( arg2 ) ){\r
+                       console.log( 'X.Callback._checkCallbackArgs : arg1 が ' + arg1 + 'です' );\r
+                       if( alt_context ){\r
+                               obj  = { x : alt_context, f : arg2, k : X.Callback._THIS_FUNC };\r
+                       } else {\r
+                               obj  = { f : arg2, k : X.Callback._FUNC_ONLY };\r
+                       };\r
+               } else\r
+               if( alt_context && X.Type.isFunction( alt_context[ 'handleEvent' ] ) ){\r
+                       obj  = { x : alt_context, f : alt_context[ 'handleEvent' ], k : X.Callback._HANDLEEVENT };\r
+                       arg3 = arg1;\r
+               } else {\r
+                       console.log( '不正 ' + arg1 );\r
+                       console.dir( arg1 );\r
+                       return;\r
+               };\r
+               \r
+               if( X.Type.isArray( arg3 )){\r
+                       obj.s = arg3;\r
                };\r
-               r = a.length === 0 ? c.call( x ) : c.apply( x, a );\r
-               delete f.a;\r
-               //delete f.t;\r
-               return r;\r
+               return ( obj.x || obj.s ) ? obj : arg1;\r
        },\r
-       _generalCallback : function(){\r
-               var f = this,\r
-                       a = f.a,\r
-                       s = f.add,\r
-                       c = f.callback,\r
-                       i = 0,\r
-                       ary, r;\r
-               //s && s.push.apply( a, s );\r
-               if( s && s.length ){\r
-                       ary = [];\r
-                       a.length &&\r
+       \r
+       _proxyCallback : function( xfunc ){\r
+               var args    = xfunc.a || [],\r
+                       thisObj = xfunc.x,\r
+                       func    = xfunc.f,\r
+                       supp    = xfunc.s,\r
+                       temp, ret;\r
+               \r
+               delete xfunc.a;         \r
+               \r
+               if( supp && supp.length ){\r
+                       temp = [];\r
+                       args.length &&\r
                                (\r
-                                       a.length === 1 ?\r
-                                               ( ary[ 0 ] = a[ 0 ] ) :\r
-                                               ary.push.apply( ary, a )\r
+                                       args.length === 1 ?\r
+                                               ( temp[ 0 ] = args[ 0 ] ) :\r
+                                               temp.push.apply( temp, args )\r
                                );\r
-                       s.length === 1 ?\r
-                               ( ary[ ary.length ] = s[ 0 ] ) :\r
-                               ary.push.apply( ary, s );\r
-                       a = ary;\r
+                       supp.length === 1 ?\r
+                               ( temp[ temp.length ] = supp[ 0 ] ) :\r
+                               temp.push.apply( temp, supp );\r
+                       args = temp;\r
+               };\r
+               \r
+               switch( xfunc.k ){\r
+\r
+                       case X.Callback._THIS_FUNC :\r
+                               return args.length === 0 ? func.call( thisObj ) : func.apply( thisObj, args );\r
+                               \r
+                       case X.Callback._HANDLEEVENT :\r
+                               temp = thisObj[ 'handleEvent' ];\r
+                               if( temp !== func && X.Type.isFunction( temp ) ){\r
+                                       return args.length === 0 ? thisObj[ 'handleEvent' ]() : temp.apply( thisObj, args );\r
+                               } else\r
+                               if( X.Type.isFunction( thisObj ) ){\r
+                                       return args.length === 0 ? thisObj.call( thisObj ) : thisObj.apply( thisObj, args );\r
+                               };\r
+                               return args.length === 0 ? func.call( thisObj ) : func.apply( thisObj, args );\r
+                                                       \r
+                       case X.Callback._FUNC_ONLY :\r
+                               return args.length === 0 ?\r
+                                               func() :\r
+                                       args.length === 1 ?\r
+                                               func( args[ 0 ] ) :\r
+                                               func.apply( null, args );\r
                };\r
-               r = a.length === 0 ?\r
-                               c() :\r
-                       a.length === 1 ?\r
-                               c( a[ 0 ] ) :\r
-                               c.apply( null, a );\r
-               delete f.a;\r
-               //delete f.t;\r
-               return r;\r
        },\r
+       \r
        _kill : function(){\r
                X.Callback._correct( this );\r
        },\r
        _same : function( arg0, arg1, arg2 ){\r
-               var listener, context, callback,\r
-                       f = this;\r
-                       \r
-               if( arg0.kill === X.Callback._kill ){ // arg0 === X.Callback toString() で判定は?\r
-                       return this === arg0;\r
-               } else\r
-               if( typeof arg1 === 'function' ){\r
-                       context  = arg0;\r
-                       callback = arg1;\r
-               } else\r
-               if( typeof arg0 === 'function' ){\r
-                       callback = arg0;\r
-                       arg2     = arg1;\r
-               } else\r
-               if( arg0 && typeof arg0.handleEvent === 'function' ){\r
-                       listener = arg0;\r
-                       arg2     = arg1;\r
-               };\r
+               var hash, kind;\r
                \r
-               if( arg2 && f.add !== arg2 ){\r
-                       return false;\r
-               };\r
+               if( arg0 && arg0[ 'kill' ] === X.Callback._kill ) return this === arg0;\r
                \r
-               if( listener && f.listener === listener ){\r
-                       return true;\r
-               } else\r
-               if( context && f.context === context && f.callback === callback ){\r
-                       return true;\r
-               } else          \r
-               if( f.callback === callback ){\r
-                       return true;\r
+               hash = X.Callback._checkCallbackArgs( arg0, arg1, arg2 ),\r
+               kind = hash.k;\r
+               \r
+               if( this.k !== kind ) return false;\r
+               \r
+               switch( kind ){\r
+                       case X.Callback._THIS_FUNC :\r
+                               return this.x === hash.x && this.f === hash.f && this.s === hash.s;\r
+\r
+                       case X.Callback._HANDLEEVENT :\r
+                               return this.x === hash.x && this.f === hash.f && this.s === hash.s;\r
+\r
+                       case X.Callback._FUNC_ONLY :\r
+                               return this.f === hash.f && this.s === hash.s;\r
                };\r
                return false;\r
        },\r
        _correct : function( f ){\r
-               var self = X.Callback,\r
-                       i    = self._LIVE_LIST.indexOf( f );\r
-               if( f.c ) delete f.c;\r
-               if( f.listener ) delete f.listener;\r
-               if( f.context  ) delete f.context;\r
-               if( f.callback ) delete f.callback;\r
-               if( f.add      ) delete f.add;\r
+               var i = X.Callback._LIVE_LIST.indexOf( f );\r
+               //delete f._;\r
+               delete f.k;\r
+               if( f.x ) delete f.x;\r
+               if( f.f ) delete f.f;\r
+               if( f.s ) delete f.s;\r
                if( i === -1 ) return;\r
-               self._LIVE_LIST.splice( i, 1 );\r
-               self._POOL_LIST.push( f );\r
+               X.Callback._LIVE_LIST.splice( i, 1 );\r
+               X.Callback._POOL_LIST.push( f );\r
        },\r
+       \r
        sys_monitor : function(){\r
                return {\r
                        'Live callback' : X.Callback._LIVE_LIST.length,\r
@@ -179,13 +193,14 @@ X.Callback = {
                };\r
        },\r
        sys_gc : function(){\r
-               var self = X.Callback,\r
-                       list = self._POOL_LIST, f;\r
+               var list = X.Callback._POOL_LIST,\r
+                       f;\r
                while( 0 < list.length ){\r
                        f = list.shift();\r
-                       self._correct( f );\r
-                       delete f.kill;\r
-                       delete f.same;\r
+                       X.Callback._correct( f );\r
+                       delete f[ '_' ];\r
+                       delete f[ 'kill' ];\r
+                       delete f[ 'same' ];\r
                };\r
        }\r
 };\r
index d207ed0..89c0d16 100644 (file)
@@ -27,8 +27,8 @@ X.Timer = {
        next           : 0,\r
        busy           : false, // for Opera7\r
 \r
-       REQUEST_FRAME_LIST : [],\r
-       requestID : 0,\r
+       REQ_FRAME_LIST : [],\r
+       requestID      : 0,\r
        \r
        _loop : function(){\r
                var next = X.Timer.next,\r
@@ -44,17 +44,23 @@ X.Timer = {
                \r
            for( ; i; ){\r
                q = list[ --i ];\r
-                       if( 0 < ( q.l -= next ) ) continue;\r
-                       f = q.f;\r
-                       c = q.c;\r
-                       if( f() & X.Callback.UN_LISTEN || c === 1 ){\r
+                       if( 0 < ( q.last -= next ) ) continue;\r
+                       c = q.count;\r
+                       \r
+                       if( q.k ){\r
+                               q.a = [];\r
+                               r = X.Callback._proxyCallback( q );\r
+                       } else {\r
+                               r = q.f();\r
+                       };\r
+                       \r
+                       if( r & X.Callback.UN_LISTEN || c === 1 ){\r
                                list.splice( i, 1 );\r
-                               f.kill && f.kill();\r
-                               //queue.length = 0;\r
+                               //f.kill && f.kill();\r
                                continue;\r
                        } else\r
-                       if( 1 < c ) --q.c;\r
-                       q.l = q.t;\r
+                       if( 1 < c ) --q.count;\r
+                       q.last = q.time;\r
            };\r
            X.Timer.timerId = 0;\r
            X.Timer.busy = false;\r
@@ -71,7 +77,7 @@ X.Timer = {
                        return;\r
                };\r
            for( ; i; ){\r
-               ( l = list[ --i ].l ) < n && ( n = l );\r
+               ( l = list[ --i ].last ) < n && ( n = l );\r
            };\r
            if( n < X.Timer.next || X.Timer.timerId === 0 ){\r
                X.Timer.timerId && window.clearTimeout( X.Timer.timerId );\r
@@ -82,36 +88,45 @@ X.Timer = {
        },\r
        \r
        _onEnterFrame : function ( time ){\r
-               var list = X.Timer.REQUEST_FRAME_LIST,\r
+               var list = X.Timer.REQ_FRAME_LIST,\r
                        i    = list.length,\r
-                       f;\r
+                       q;\r
                time = time || ( Date.now ? Date.now() : +new Date );\r
            for( ; i; ){\r
-               ( f = list[ --i ] )( time );\r
-               delete f.uid;\r
-               f.kill && f.kill();\r
+               q = list[ --i ];\r
+               \r
+                       if( q.k ){\r
+                               q.a = [ time ];\r
+                               X.Callback._proxyCallback( q );\r
+                       } else {\r
+                               q.f( time );\r
+                       };\r
+               //delete f.uid;\r
+               //f.kill && f.kill();\r
            };\r
            list.length = 0;\r
        },\r
        \r
        add : function( time, opt_count, args1, args2, args3 ){\r
-               var list = X.Timer.TICKET_LIST;\r
-               time = time < X.Timer.INTERVAL_TIME ? 1 : ( time / X.Timer.INTERVAL_TIME ) | 0; // 正の数で使える「Math.floor(x)」を「(x | 0)」に;\r
+               var list = X.Timer.TICKET_LIST,\r
+                       hash, obj;\r
+               time = time < X.Timer.INTERVAL_TIME ? 1 : time / X.Timer.INTERVAL_TIME | 0; // 正の数で使える「Math.floor(x)」を「(x | 0)」に;\r
                \r
-               if( typeof opt_count !== 'number' ){\r
+               if( !X.Type.isNumber( opt_count ) ){\r
                        args3 = args2;\r
                        args2 = args1;\r
                        args1 = opt_count;\r
                        opt_count = 0;\r
                };\r
-\r
-               list[ list.length ] = {\r
-                       t : time,\r
-                       l : time,\r
-                       c : opt_count,\r
-                       f : X.Callback.create( args1, args2, args3 ),\r
-                       u : ++X.Timer.uid\r
-               };\r
+               \r
+               hash = X.Callback._checkCallbackArgs( args1, args2, args3 );\r
+               if( !hash.k ) hash = { f : hash };\r
+               hash.time  = time;\r
+               hash.last  = time;\r
+               hash.count = opt_count;\r
+               hash.uid   = ++X.Timer.uid;\r
+               list[ list.length ] = hash;\r
+               \r
            !X.Timer.busy && X.Timer._update();\r
            return X.Timer.uid;\r
        },\r
@@ -126,10 +141,10 @@ X.Timer = {
                for( ; i; ){\r
                        // TODO\r
                        // fire 中の cancel\r
-                       if( ( q = list[ --i ] ).u === uid ){\r
+                       if( ( q = list[ --i ] ).uid === uid ){\r
                                list.splice( i, 1 );\r
-                               f = q.f;\r
-                               f.kill && f.kill();\r
+                               //f = q.f;\r
+                               //f.kill && f.kill();\r
                                !X.Timer.busy && ( /* q[ INDEX_COUNT ] <= next  || */ l === 1 ) && X.Timer._update();\r
                                //q.length = 0;\r
                                break;\r
@@ -139,23 +154,23 @@ X.Timer = {
        \r
        requestFrame : _enterFrame ?\r
                (function( args1, args2, args3 ){\r
-                       var i = X.Timer.REQUEST_FRAME_LIST.length,\r
+                       var i = X.Timer.REQ_FRAME_LIST.length,\r
                                f;\r
                        i === 0 && ( X.Timer.requestID = _enterFrame( X.Timer._onEnterFrame ) );\r
-                       f = X.Timer.REQUEST_FRAME_LIST[ i ] = X.Callback.create( args1, args2, args3 );\r
+                       f = X.Timer.REQ_FRAME_LIST[ i ] = X.Callback._checkCallbackArgs( args1, args2, args3 );\r
                        return f.uid = ++X.Timer.uid;\r
                }) :\r
                (function( args1, args2, args3 ){\r
-                       var i = X.Timer.REQUEST_FRAME_LIST.length,\r
+                       var i = X.Timer.REQ_FRAME_LIST.length,\r
                                f;\r
                        i === 0 && ( X.Timer.requestID = X.Timer.add( 0, 1, X.Timer._onEnterFrame ) );\r
-                       f = X.Timer.REQUEST_FRAME_LIST[ i ] = X.Callback.create( args1, args2, args3 );\r
+                       f = X.Timer.REQ_FRAME_LIST[ i ] = X.Callback._checkCallbackArgs( args1, args2, args3 );\r
                        return f.uid = ++X.Timer.uid;\r
                }),\r
        \r
        cancelFrame : _cancelFrame ?\r
                (function( uid ){\r
-                       var list = X.Timer.REQUEST_FRAME_LIST,\r
+                       var list = X.Timer.REQ_FRAME_LIST,\r
                                l    = list.length,\r
                                i    = l,\r
                                f;\r
@@ -165,15 +180,15 @@ X.Timer = {
                                        // TODO\r
                                        // fire 中の cancel\r
                                        list.splice( i, 1 );\r
-                                       delete f.uid;\r
-                                       f.kill && f.kill();\r
+                                       //delete f.uid;\r
+                                       //f.kill && f.kill();\r
                                        l === 1 && _cancelFrame( X.Timer.requestID );\r
                                        break;\r
                                };\r
                        };\r
                }) :\r
                (function( uid ){\r
-                       var list = X.Timer.REQUEST_FRAME_LIST,\r
+                       var list = X.Timer.REQ_FRAME_LIST,\r
                                l    = list.length,\r
                                i    = l,\r
                                f;\r
@@ -181,8 +196,8 @@ X.Timer = {
                                if( ( f = list[ --i ] ).uid < uid ) break;\r
                                if( f.uid === uid ){\r
                                        list.splice( i, 1 );\r
-                                       delete f.uid;\r
-                                       f.kill && f.kill();\r
+                                       //delete f.uid;\r
+                                       //f.kill && f.kill();\r
                                        l === 1 && X.Timer.remove( X.Timer.requestID );\r
                                        break;\r
                                };\r
@@ -194,15 +209,15 @@ X.Timer = {
 // http://havelog.ayumusato.com/develop/javascript/e528-ios6_scrolling_timer_notcall.html\r
 // iOS6 スクロール中のタイマー発火絡みのバグ備忘\r
 if( X.UA.iOS ){\r
-        window.addEventListener( 'scroll', function(){\r
-               if( X.Timer.timerId ){\r
-                       window.clearTimeout( X.Timer.timerId );\r
-                       X.Timer.timerId = window.setTimeout( X.Timer._loop, Math.max( 0, X.Timer.endTime - X.getTime() ) );\r
-               };\r
-        } );\r
+       window.addEventListener( 'scroll', function(){\r
+               if( X.Timer.timerId ){\r
+                       window.clearTimeout( X.Timer.timerId );\r
+                       X.Timer.timerId = window.setTimeout( X.Timer._loop, Math.max( 0, X.Timer.endTime - X.getTime() ) );\r
+               };\r
+       });\r
 };\r
 \r
-if( X.UA.IE && ( X.UA.IE < 5 || X.UA.MacIE ) ){\r
+if( X.UA.IE < 5 || X.UA.MacIE ){\r
        X.Timer[ '_ie_loop' ] = X.Timer._loop;\r
        X.Timer._loop = 'X.Timer._ie_loop()';\r
 };\r
index 2391b79..37b4815 100644 (file)
@@ -35,8 +35,6 @@ X.EventDispatcher =
                                var list = this._listeners,\r
                                        r, f;\r
                                if( this._dispatching ){\r
-                                       // todo\r
-                                       // reserve\r
                                        if( !this._reserves ) this._reserves = [];\r
                                        this._reserves[ this._reserves.length ] = [ type, arg1, arg2, arg3, X.EventDispatcher._once ];\r
                                        return this;\r
@@ -45,11 +43,17 @@ X.EventDispatcher =
 \r
                                if( !list ) list = this._listeners = {};\r
                                if( !( list = list[ type ] ) ) list = this._listeners[ type ] = [];\r
-                               list[ list.length ] = f =\r
-                                       ( arg1 && !arg2 ) ?\r
-                                               arg1 :\r
-                                               X.Callback.create( arg1, arg2, arg3 ); // TODO create しないで、arg1~arg3 を保持\r
+                               \r
+                               f = X.Callback._checkCallbackArgs( arg1, arg2, arg3 );\r
+                               if( !f.k ){\r
+                                       f = X.Callback._checkCallbackArgs( this, arg1 );\r
+                               } else\r
+                               if( f.k === X.Callback._FUNC_ONLY ){\r
+                                       f = X.Callback._checkCallbackArgs( this, f.f, f.s );\r
+                               };\r
+                               list[ list.length ] = f;\r
                                f.once = X.EventDispatcher._once;\r
+                               \r
                                return this;\r
                        },\r
                        listenOnce : function( type, arg1, arg2, arg3 ){\r
@@ -116,19 +120,32 @@ X.EventDispatcher =
                                return this;\r
                        },\r
                        listening : function( type, arg1, arg2, arg3 ){\r
-                               var list = this._listeners, unlistens, i, f;\r
+                               var list = this._listeners, unlistens, i, f, hash;\r
                                if( type === undefined ) return !!list;\r
                                if( !list || !( list = list[ type ] ) ) return false;\r
                                if( arg1 === undefined ) return true;\r
+                               \r
+                               if( arg1.k ){\r
+                                       hash = arg1;\r
+                               } else {\r
+                                       hash = X.Callback._checkCallbackArgs( arg1, arg2, arg3 );\r
+                                       if( !hash.k ){\r
+                                               hash = X.Callback._checkCallbackArgs( this, arg1 );\r
+                                       } else\r
+                                       if( hash.k === X.Callback._FUNC_ONLY ){\r
+                                               hash = X.Callback._checkCallbackArgs( this, hash.f, hash.s );\r
+                                       };\r
+                               };\r
+                               \r
                                if( ( unlistens = this._unlistens ) && ( unlistens = unlistens[ type ] ) ){\r
                                        for( i = unlistens.length; i; ){\r
                                                f = unlistens[ --i ];\r
-                                               if( f === arg1 || ( f.same && f.same( arg1, arg2, arg3 ) ) ) return false;\r
+                                               if( f === hash || ( f.x === hash.x && f.f === hash.f && f.s === hash.s ) ) return false;\r
                                        };\r
                                };\r
                                for( i = list.length; i; ){\r
                                        f = list[ --i ];\r
-                                       if( f === arg1 || ( f.same && f.same( arg1, arg2, arg3 ) ) ) return this._needsIndex ? i : true;\r
+                                       if( f === hash || ( f.x === hash.x && f.f === hash.f && f.s === hash.s ) ) return this._needsIndex ? i : true;\r
                                };\r
                                return false;\r
                        },\r
@@ -166,10 +183,16 @@ X.EventDispatcher =
                                                unlistens = this._unlistens[ type ];\r
                                        };\r
                                        if( unlistens && unlistens.indexOf( f ) !== -1 ) continue;\r
-\r
-                                       r = typeof f === 'function' ? f( e ) : f.handleEvent( e ); // dispatch 中に unlisten が作られることがある\r
+                                       \r
+                                       if( f.k ){\r
+                                               f.a = [ e ];\r
+                                               r = X.Callback._proxyCallback( f );\r
+                                       } else {\r
+                                               r = f.call( this, e );\r
+                                       };\r
                                        \r
                                        if( f.once || r & X.Callback.UN_LISTEN ){\r
+                                               // dispatch 中に unlisten が作られることがある\r
                                                if( !unlistens ){\r
                                                        unlistens = this._unlistens || ( this._unlistens = {} );\r
                                                        unlistens = unlistens[ type ] || ( unlistens[ type ] = [] );\r
@@ -226,7 +249,7 @@ X.EventDispatcher =
                        },\r
                        \r
                        asyncDispatch : function( delay, e ){\r
-                               return X.Timer.once( delay, this, this.dispatch, [ e ] );\r
+                               return X.Timer.add( delay, 1, this, this.dispatch, [ e ] );\r
                        }\r
                }\r
        );\r
index d4cee5d..3b94a47 100644 (file)
@@ -43,6 +43,8 @@ X.Dom = X.Class._override(
                                        \r
                                }) :\r
                                (function( e ){\r
+                                       console.log( '-- resize : ' + X.getTime() );\r
+                                       \r
                                        !X.Dom._lock && ( X.Dom._lock = true ) && X.Timer.once( 100, X.Dom._detectFinishResizing );\r
                                        return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;\r
                                }),\r
@@ -54,8 +56,14 @@ X.Dom = X.Class._override(
                                X.Dom.h = size[ 1 ];\r
                                X.Timer.once( 100, X.Dom._detectFinishResizing );\r
                        } else {\r
+                               console.log( '-- detectFinishResizing : ' + X.getTime() );\r
+                               \r
                                X.Dom.asyncDispatch( 0, { type : X.Dom.Event.VIEW_RESIZED, w : X.Dom.w, h : X.Dom.h } );\r
                                X.Dom._lock = false;\r
+                               if( X.Dom._orientationFlag ){\r
+                                       X.Dom._orientationFlag = false;\r
+                                       X.Dom.asyncDispatch( 100, { type : X.Dom.Event.VIEW_TURNED, orientation : window.orientation } );\r
+                               };\r
                        };\r
                },\r
 \r
@@ -79,6 +87,9 @@ X.Dom = X.Class._override(
                                        null;\r
                \r
                        r = Node._body = new Node( document.body );\r
+                       \r
+                       Node.root = r; // 後方互換\r
+                       \r
                        h.appendTo = h.appendToRoot = h.before = h.after = h.clone = h.remove = h.destroy = h.prevNode = h.nextNode = h.createText = h.append = h.appendAt = h.empty = h.html = h.text =\r
                        r.appendTo = r.appendToRoot = r.before = r.after = r.clone = r.remove = r.destroy = r.prevNode = r.nextNode = new Function( 'return this' );\r
                        \r
@@ -104,7 +115,11 @@ X.Dom = X.Class._override(
 \r
                        X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){\r
                                var size = X.Dom._getSize();\r
-\r
+                               \r
+                               if( X.Dom._orientationchange ){\r
+                                       X.Dom.Node._window.listen( 'orientationchange', X.Dom._orientationchange );\r
+                               };\r
+                               \r
                                if( X.Dom._detectFontSize ){\r
                                        X.Dom.Node._window.listen( 'resize', X.Dom._resize );\r
                                        X.Timer.add( 333, X.Dom._detectFontSize );\r
@@ -409,4 +424,12 @@ X.Dom.getAbsolutePath = function( path ){
        return [ _ary[ 0 ], ss, ary.join( s ), s, path ].join( '' );\r
 };\r
 \r
+if( window[ 'orientation' ] !== undefined ){\r
+       X.Dom._orientationchange = function( e ){\r
+               X.Dom._orientationFlag = true;\r
+               console.log( '-- orientationchange : ' + X.getTime() );\r
+       };\r
+};\r
+\r
+\r
 console.log( 'X.Dom dom:w3c=' + X.Dom.DOM_W3C + ' ev:w3c=' + X.Dom.EVENT_W3C );\r
index bc48a70..3096eed 100644 (file)
@@ -783,6 +783,10 @@ Node.prototype.text = function( text ){
                        return this;\r
                };\r
                if( !text ) return this.empty();\r
+               if( ( xnodes = this._xnodes ) && xnodes.length === 1 && xnodes[ 0 ]._xnodeType === 3 ){\r
+                       xnodes[ 0 ].text( text );\r
+                       return this;\r
+               };\r
                this.empty().createText( text );\r
                return this;\r
        };\r
@@ -855,7 +859,7 @@ Node.prototype._startUpdate = function(){
                removal.length = 0;\r
        };\r
 \r
-       console.log( 'start _startUpdate().' );\r
+       //console.log( 'start _startUpdate().' );\r
 \r
        Node._html._dirty ? Node._html._commitUpdate() : this._commitUpdate();\r
        \r
index bddd800..72a49ee 100644 (file)
@@ -7,6 +7,7 @@
 \r
 if( X.Dom.EVENT_W3C ){\r
        X.Dom.Event = function( e, xnode ){\r
+               var touch0;\r
                //this._event        = e;\r
                this.type          = X.Dom.Event.RenameTo[ e.type ] || e.type;\r
                \r
@@ -63,6 +64,16 @@ if( X.Dom.EVENT_W3C ){
                        this.targetTouches  = e.targetTouches;\r
                        this.metaKey        = e.metaKey;\r
                        this.force          = e.force || e.webkitForce || 0;\r
+                       //\r
+                       if( this.touches.length ){\r
+                               touch0             = this.touches[ 0 ];\r
+                               this.clientX       = touch0.clientX;\r
+                               this.clientY       = touch0.clientY;\r
+                               this.pageX         = touch0.pageX;\r
+                               this.pageY         = touch0.pageY;\r
+                               this.offsetX       = touch0.offsetX || touch0.layerX;\r
+                               this.offsetY       = touch0.offsetY || touch0.layerY;\r
+                       };\r
                } else\r
                if( e.constructor === window.PointerEvent ){\r
                        // PointerEvent;\r
@@ -80,6 +91,9 @@ if( X.Dom.EVENT_W3C ){
                        this.tiltY         = e.tiltY;\r
                };\r
        };\r
+       if( !window.PointerEvent && window.MSPointerEvent ){\r
+               window.PointerEvent = window.MSPointerEvent;\r
+       };\r
 } else {\r
        X.Dom.Event = function( e, xnode, element ){\r
                var btn;\r
@@ -150,6 +164,7 @@ X.Dom.Event.XDOM_READY          = ++X.Event._LAST_EVENT;
 X.Dom.Event.VIEW_ACTIVATE       = ++X.Event._LAST_EVENT;\r
 X.Dom.Event.VIEW_DEACTIVATE     = ++X.Event._LAST_EVENT;\r
 X.Dom.Event.VIEW_RESIZED        = ++X.Event._LAST_EVENT;\r
+X.Dom.Event.VIEW_TURNED         = ++X.Event._LAST_EVENT;\r
 X.Dom.Event.BASE_FONT_RESIZED   = ++X.Event._LAST_EVENT;\r
 // same_page_jump\r
 // on_screen_keyboard_show\r
@@ -177,6 +192,7 @@ X.Dom.Event.RenameTo = {};
 // https://github.com/georgeadamson/jQuery.prefixfree-events/blob/master/jQuery.prefixfree-events.js\r
 \r
 if( window.onwebkitanimationend !== undefined && window.onanimationend === undefined ){\r
+       console.log( 'animationend <= webkitAnimationEnd' );\r
          X.Dom.Event.Rename[ 'animationend' ]             = 'webkitAnimationEnd';\r
        X.Dom.Event.RenameTo[ 'webkitAnimationEnd' ]       = 'animationend';\r
          X.Dom.Event.Rename[ 'animationstart' ]           = 'webkitAnimationStart';\r
@@ -185,6 +201,7 @@ if( window.onwebkitanimationend !== undefined && window.onanimationend === undef
        X.Dom.Event.RenameTo[ 'webkitAnimationIteration' ] = 'animationiteration';\r
 } else\r
 if( window.onoanimationend !== undefined && window.onanimationend === undefined ){\r
+       console.log( 'animationend <= oAnimationEnd' );\r
          X.Dom.Event.Rename[ 'animationend' ]        = 'oAnimationEnd';\r
        X.Dom.Event.RenameTo[ 'oAnimationEnd' ]       = 'animationend';\r
          X.Dom.Event.Rename[ 'animationstart' ]      = 'oAnimationStart';\r
@@ -202,6 +219,7 @@ if( window.onmozanimationend !== undefined && window.onanimationend === undefine
        X.Dom.Event.RenameTo[ 'mozAnimationIteration' ] = 'animationiteration';\r
 } else*/\r
 if( document.documentElement && document.documentElement.style.msAnimation !== undefined && document.documentElement.style.animation === undefined ){ //document.documentElement.style.msAnimation \r
+       console.log( 'animationend <= MSAnimationEnd' );\r
          X.Dom.Event.Rename[ 'animationend' ]         = 'MSAnimationEnd';\r
        X.Dom.Event.RenameTo[ 'MSAnimationEnd' ]       = 'animationend';\r
          X.Dom.Event.Rename[ 'animationstart' ]       = 'MSAnimationStart';\r
@@ -212,25 +230,30 @@ if( document.documentElement && document.documentElement.style.msAnimation !== u
 // https://developer.mozilla.org/en-US/docs/Web/Events/transitionend\r
 // chrome1+, firefox4+, IE10+, Opera10.5+, Safari3.2+, Android2.1+\r
 if( window.onwebkittransitionend !== undefined && window.ontransitionend === undefined ){\r
+       console.log( 'transitionend <= webkitTransitionEnd' );\r
          X.Dom.Event.Rename[ 'transitionend' ]       = 'webkitTransitionEnd';\r
        X.Dom.Event.RenameTo[ 'webkitTransitionEnd' ] = 'transitionend';\r
 } else\r
 if( window.onotransitionend !== undefined && window.ontransitionend === undefined ){\r
        if( X.UA.Opera < 12 ){\r
+               console.log( 'transitionend <= oTransitionEnd|ver.' + X.UA.Opera );\r
                  X.Dom.Event.Rename[ 'transitionend' ]  = 'oTransitionEnd';\r
                X.Dom.Event.RenameTo[ 'oTransitionEnd' ] = 'transitionend';\r
        } else {\r
+               console.log( 'transitionend <= otransitionEnd|ver.' + X.UA.Opera );\r
                  X.Dom.Event.Rename[ 'transitionend' ]  = 'otransitionEnd';\r
                X.Dom.Event.RenameTo[ 'otransitionEnd' ] = 'transitionend';\r
        };\r
 } else\r
 if( window.onmoztransitionend !== undefined && window.ontransitionend === undefined ){\r
+       console.log( 'transitionend <= mozTransitionEnd' );\r
          X.Dom.Event.Rename[ 'transitionend' ]    = 'mozTransitionEnd';\r
        X.Dom.Event.RenameTo[ 'mozTransitionEnd' ] = 'transitionend';\r
 };\r
 \r
 \r
 if( navigator.msPointerEnabled && !navigator.pointerEnabled ){\r
+       console.log( 'pointerdown <= MSPointerDown' );\r
          X.Dom.Event.Rename[ 'pointerdown'     ] = 'MSPointerDown';\r
        X.Dom.Event.RenameTo[ 'MSPointerDown'   ] = 'pointerdown';\r
          X.Dom.Event.Rename[ 'pointerup'       ] = 'MSPointerUp';\r
@@ -243,16 +266,12 @@ if( navigator.msPointerEnabled && !navigator.pointerEnabled ){
 \r
 \r
 \r
-X.Dom.Node.prototype.listen = function( type, arg1, arg2, arg3 /* [ listener || ( context + function ) || function ][ arguments ] */ ){\r
-       var elm;\r
-       \r
-       if( this._xnodeType === 0 || this._xnodeType === 3 || !arg1 ) return this;\r
+X.Dom.Node.prototype.listen = function( type /* , arg1, arg2, arg3[ listener || ( context + function ) || function ][ arguments ] */ ){\r
+       if( this._xnodeType === 0 || this._xnodeType === 3 ) return this;\r
        \r
        ( !this._listeners || !this._listeners[ type ] ) && X.Type.isString( type ) && this._addEvent( type );\r
        \r
-       return typeof arg1 === 'function' ?\r
-               X.EventDispatcher.prototype.listen.call( this, type, this, arg1, arg2 ) :\r
-               X.EventDispatcher.prototype.listen.apply( this, arguments );\r
+       return X.EventDispatcher.prototype.listen.apply( this, arguments );\r
 };\r
 \r
 X.Dom.Node.prototype._addEvent =\r
index ab5a5b7..8017f28 100644 (file)
@@ -70,4 +70,5 @@ _text = X.Class._getPrivate( text );
 \r
 function _onClick( e ){\r
        alert( e.type );\r
+       console.log( e.type + ' -----------' );\r
 };\r
index 5f1b300..ba655fd 100644 (file)
@@ -38,6 +38,7 @@
                        pointerType, i, l, touches, ret, active, gesture, startEv,\r
                        hammer, deltaTime, deltaX, deltaY, velocity;\r
 \r
+               //console.log( 'Hammer@handleEvent ' + X.UI.Event.IdToName[ e.type ] + ' ' + e.pointerType );\r
                if( !type ) return;\r
                \r
                if( e.pointerType ){\r
                                // only when the instance options have enabled this gesture\r
                                active[ gesture.name ] &&\r
                                        // if a handler returns false, we stop with the detection\r
-                                       ( ret |= ( gesture.handler.call( gesture, e, hammer ) || X.Callback.NONE ) );\r
+                                       ( ret |= ( gesture.handler( e, hammer ) || X.Callback.NONE ) );\r
                        };\r
 \r
                        // endevent, but not the last touch, so dont stop\r
        \r
        // detect touchevents\r
        Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled;\r
+       Hammer.HAS_POINTEREVENTS && console.log( 'Hammer.HAS_POINTEREVENTS : true' );\r
+\r
 \r
        // eventtypes per touchevent (start, move, end)\r
        // are filled by HamEvent.determineEventTypes on setup\r
index bc7de5e..dab47c0 100644 (file)
@@ -72,8 +72,8 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                        this.dispatch( { type : X.UI.Event.INIT } );\r
                },\r
                \r
-               addToParent : function( parentElement ){\r
-                       parentElement && parentElement.append( this.xnode );\r
+               addToParent : function( xnodeParent ){\r
+                       xnodeParent && xnodeParent.append( this.xnode );\r
                        \r
                        this.phase = 2;\r
                        this.dispatch( { type : X.UI.Event.ADDED } );\r
@@ -745,7 +745,6 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                        y -= this.boxY;\r
 \r
                        if( 0 <= x && x < this.boxWidth && 0 <= y && y < this.boxHeight ){\r
-                               \r
                                !this.hovering && ( this.rootData.hoverList[ this.rootData.hoverList.length ] = this );\r
                                this.rootData.targetNodeData = this;\r
                                return true;\r
@@ -754,7 +753,7 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                \r
                \r
                listen : function( type, arg1, arg2, arg3 ){\r
-                       var root, events, counter;\r
+                       var root, events, counter, f;\r
                        if( X.UI.Event._START_POINTER <= type && type <= X.UI.Event._END_POINTER ){\r
                                if( this.phase < 3 ){\r
                                        if( !( events = this.reserveEvents ) ) this.reserveEvents = events = [];\r
@@ -763,12 +762,12 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                };\r
                                if( X.UI.Event._START_XUI_EVENT < type && type < X.UI.Event._END_XUI_EVENT ){\r
                                        if( !this.gesture ){\r
-                                               this.gesture = new X.UI.Gesture( this.root, this, type );\r
+                                               this.gesture = new X.UI.Gesture( this.rootData, this, type );\r
                                        } else {\r
                                                this.gesture.listen( type );\r
                                        };\r
                                } else {\r
-                                       console.log( type )\r
+                                       console.log( type );\r
                                        root    = this.rootData;\r
                                        counter = root.eventCounter;\r
                                        if( counter[ type ] ){\r
@@ -779,10 +778,14 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                        };\r
                                };\r
                        };\r
-                       if( typeof arg1 === 'function' ){\r
-                               return X.EventDispatcher.prototype.listen.apply( this, [ type, this.User, arg1, arg2 ] );\r
+                       f = X.Callback._checkCallbackArgs( arg1, arg2, arg3 );\r
+                       if( !f.k ){\r
+                               return X.EventDispatcher.prototype.listen.apply( this, [ type, this.User, f ] );\r
+                       } else\r
+                       if( f.k === X.Callback._FUNC_ONLY ){\r
+                               return X.EventDispatcher.prototype.listen.apply( this, [ type, this.User, f.f, f.s ] );\r
                        };\r
-                       return X.EventDispatcher.prototype.listen.apply( this, [ type, arg1 || this.User, arg2 || arg1, arg3 || arg2 ] );\r
+                       return X.EventDispatcher.prototype.listen.apply( this, arguments );\r
                },\r
                unlisten : function( type, arg1, arg2, arg3 ){\r
                        var root, events, i, ev, counter;\r
@@ -812,10 +815,14 @@ X.UI._AbstractUINode = X.EventDispatcher.inherits(
                                        };\r
                                };\r
                        };\r
-                       if( typeof arg1 === 'function' ){\r
-                               return X.EventDispatcher.prototype.unlisten.apply( this, [ type, this.User, arg1, arg2 ] );\r
+                       f = X.Callback._checkCallbackArgs( arg1, arg2, arg3 );\r
+                       if( !f.k ){\r
+                               return X.EventDispatcher.prototype.unlisten.apply( this, [ type, this.User, f ] );\r
+                       } else\r
+                       if( f.k === X.Callback._FUNC_ONLY ){\r
+                               return X.EventDispatcher.prototype.unlisten.apply( this, [ type, this.User, f.f, f.s ] );\r
                        };\r
-                       return X.EventDispatcher.prototype.unlisten.apply( this, [ type, arg1 || this.User, arg2 || arg1, arg3 || arg2 ] );\r
+                       return X.EventDispatcher.prototype.unlisten.apply( this, arguments );\r
                },\r
                \r
                dispatch : function( e ){\r
@@ -918,6 +925,9 @@ X.UI.AbstractUINode = X.Class.create(
                        X.Class._getPrivate( this ).listenOnce( type, arg1, arg2, arg3 );\r
                        return this;\r
                },\r
+               listening : function( type, arg1, arg2, arg3 ){\r
+                       return X.Class._getPrivate( this ).listening( type, arg1, arg2, arg3 );\r
+               },\r
                unlisten : function( type, arg1, arg2, arg3 ){\r
                        X.Class._getPrivate( this ).unlisten( type, arg1, arg2, arg3 );\r
                        return this;\r
index 11fe1df..e6f931a 100644 (file)
@@ -14,14 +14,14 @@ X.UI._eventRellay = function( e ){
        data._eventBusy = true;
        
        if( type !== '' + X.UI.Event._POINTER_MOVE && type !== '' + X.UI.Event._TOUCH_MOVE && type !== '' + X.UI.Event._MOUSE_MOVE ){
-       //      console.log( e.type + ' ' + type + ' x:' + x + ', y:' + y );
+               //console.log( e.type + ' ' + type + ' x:' + x + ', y:' + y );
        };
        
        e.type = type;
 
        if( data && ( data = data.monopolyNodeData ) && ( ret = data.dispatch( e ) ) & X.Callback.MONOPOLY ){
                delete X.UI.currentRootData._eventBusy;
-               return ret;
+               return ret | X.Callback.PREVENT_DEFAULT;
        };
        
        list = X.UI.currentRootData.hoverList;
@@ -56,7 +56,7 @@ X.UI._eventRellay = function( e ){
                };
        };
        delete X.UI.currentRootData._eventBusy;
-       return ret;
+       return ret | X.Callback.PREVENT_DEFAULT;
 };
 
 /*
index b4a7516..7200148 100644 (file)
@@ -78,6 +78,7 @@
                        font-weight : bold;\r
                        z-index     : 999;\r
                        cursor      : pointer;\r
+                       -webkit-tap-highlight-color : rgba(0,0,0,0);\r
                }\r
                .toggle_close #log,\r
                .toggle_none #toggle {\r
                                        body.className = toggleOpen ? 'toggle_open' : 'toggle_close';\r
                                };\r
                        };\r
-                       btn.innerHTML = toggleOpen ? '&#9658;' : '&#9660;';\r
+                       btn.innerHTML = toggleOpen ? '&#9654;' : '&#9660;';//&#9658;&#9656;\r
                };\r
                        function __readyTrans(){\r
                                var body   = document.body,\r
        </noscript>\r
 </head>\r
 <body onload="__resize()" onresize="__resize()" scroll="no"><div id="log">-- console.log() --</div><iframe src="index.html" width="500" height="100%" scrolling="yes" frameborder="0"></iframe><div id="toggle" onclick="__ontoggle();"></div></body>\r
-</html>
\ No newline at end of file
+</html>\r
+<xmp class="cleanup-target" style="display:none"><plaintext style="display:none"><!-- plainetext は nds 用 -->
\ No newline at end of file