};
if( parent !== X_UI_rootData ){
data.hoverClassName && data.xnode[ 'removeClass' ]( data.hoverClassName );
- data[ '_listeners' ] && data[ '_listeners' ][ XUI_Event.POINTER_OUT ] && data[ 'dispatch' ]( e, XUI_Event.POINTER_OUT, false ); // new Event
+ data[ '_listeners' ] && data[ '_listeners' ][ XUI_Event.POINTER_OUT ] && data[ 'dispatch' ]( XUI_Event.POINTER_OUT, false ); // new Event
delete data.hovering;
list.splice( i, 1 );
continue;
};
if( !data.hovering ){
data.hoverClassName && data.xnode.addClassName( data.hoverClassName );
- data[ '_listeners' ] && data[ '_listeners' ][ XUI_Event.POINTER_IN ] && data[ 'dispatch' ]( e, XUI_Event.POINTER_IN, true ); // new Event
+ data[ '_listeners' ] && data[ '_listeners' ][ XUI_Event.POINTER_IN ] && data[ 'dispatch' ]( XUI_Event.POINTER_IN, true ); // new Event
data.hovering = true;
};
};
return ret | X_CALLBACK_PREVENT_DEFAULT;
};
+function X_UI_onMouseOut( e ){
+ var list = X_UI_rootData.hoverList,
+ i = list.length;
+console.log( e.type + i + ' ' + e.pointerType )
+ for( ; i; ){
+ data = list[ --i ];
+ console.log( data.xnode.className() );
+ data.hoverClassName && data.xnode[ 'removeClass' ]( data.hoverClassName );
+ data[ '_listeners' ] && data[ '_listeners' ][ XUI_Event.POINTER_OUT ] && data[ 'dispatch' ](
+ { type : XUI_Event.POINTER_OUT, pointerType : e.pointerType }, false ); // new Event
+ delete data.hovering;
+ };
+ list.length = 0;
+};
+
/*
* body が存在したら要素を作成、css も指定
* 背景画像を読み終える onload で活動開始
if( X_ViewPort_readyState === X_EVENT_XDOM_READY ){
X_Timer_once( 0, this, this.start );
} else {
- X.ViewPort[ 'listenOnce' ]( X_EVENT_XDOM_READY, this, this.start );
+ X_ViewPort[ 'listenOnce' ]( X_EVENT_XDOM_READY, this, this.start );
};
this.hoverList = [];
this.xnodeInteractiveLayer = X.Doc.body.create( 'div', {
'class' : 'mouse-operation-catcher',
unselectable : 'on'
- } );
+ } )[ 'listen' ]( 'pointerleave', this, X_UI_onMouseOut );
// hover や rollover rollout のための move イベントの追加
+ // TODO この切り替えを ViewPort へ
( X_UA[ 'IE' ] < 9 ? X_ViewPort_document : X_UA[ 'Opera' ] < 8 ? X_Node_body : X_ViewPort )[ 'listen' ]( 'pointermove', X_UI_eventRellay );
if( counter[ XUI_Event._POINTER_MOVE ] ){
++counter[ XUI_Event._POINTER_MOVE ];
function XUI_Root_do1stCalculate(){
this.calculate();
this.phase = 4;
- X.ViewPort
+ X_ViewPort
[ 'listen' ]( X_EVENT_VIEW_RESIZED, this, this.calculate )
[ 'listen' ]( X_EVENT_BASE_FONT_RESIZED, this, this.calculate );
};