NONE : 0,\r
UN_LISTEN : 1,\r
STOP_PROPAGATION : 2, // 上位階層への伝播のキャンセル\r
- STOP_NOW : 4, // 同一階層のリスナーのキャンセル\r
+ STOP_NOW : 4 | 2, // 同一階層のリスナーのキャンセル(上位へもキャンセル)\r
PREVENT_DEFAULT : 8, // 結果動作のキャンセル,\r
MONOPOLY : 16, // move event を独占する\r
- SYS_CANCEL : 32,\r
+ SYS_CANCEL : 32 | 4 | 2,\r
+ \r
+ _LIVE_LIST : [],\r
+ _POOL_LIST : [],\r
\r
- _LIVE_LIST : [],\r
- _POOL_LIST : [],\r
create : function( arg0, arg1, arg2 /* [ listener || ( context + function ) || function ][ args... ] */ ){\r
var self = X.Callback,\r
live = self._LIVE_LIST,\r
} else\r
if( typeof arg0 === 'function' ){\r
callback = arg0;\r
- arg2 = arg1;\r
+ if( !( arg2 = arg1 ) ) return callback; // function のみの場合 callback オブジェクトを作らない\r
} else\r
if( arg0 && typeof arg0.handleEvent === 'function' ){\r
listener = arg0;\r
};\r
return f;\r
},\r
- find : function( arg0, arg1 /* [ listener || ( context + function ) || function ] */ ){\r
- var live = X.Callback._LIVE_LIST,\r
- i = live.length,\r
- listener, context, callback,\r
- f;\r
- if( typeof arg1 === 'function' ){\r
- context = arg0;\r
- callback = arg1;\r
- } else\r
- if( typeof arg0 === 'function' ){\r
- callback = arg0;\r
- } else\r
- if( arg0 && typeof arg0.handleEvent === 'function' ){\r
- listener = arg0;\r
- };\r
- \r
- for( ; i; ){\r
- f = live[ --i ];\r
- if( listener && f.listener === listener ){\r
- return f;\r
- } else\r
- if( context && f.context === context && f.callback === callback ){\r
- return f;\r
- } else \r
- if( f.callback === callback ){\r
- return f;\r
- };\r
- };\r
- return null;\r
- },\r
+ \r
_contextCallback : function(){\r
var f = this,\r
a = f.a,\r
//s && s.push.apply( a, s );\r
if( s && s.length ){\r
ary = [];\r
- a.length && ary.push.apply( ary, a );\r
- ary.push.apply( ary, s );\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
};\r
r = a.length === 0 ? c.call( x ) : c.apply( x, a );\r
//s && s.push.apply( a, s );\r
if( s && s.length ){\r
ary = [];\r
- a.length && ary.push.apply( ary, a );\r
- ary.push.apply( ary, s );\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
};\r
- r = a.length === 0 ? c() : c.apply( null, a );\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