X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;ds=sidebyside;f=0.6.x%2Fjs%2F02_dom%2F20_XNode.js;h=f09db3a1dc5e50a50876f9466af1b42c815e5ca2;hb=009b1cd0cebdd15591a9abfb964fb57b41ccb5f9;hp=81c33fab01ecb2a313cde9ec04152e1ce9d95928;hpb=a205577d1e16a34301f1199dcf9c699aa2c37fb9;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/02_dom/20_XNode.js b/0.6.x/js/02_dom/20_XNode.js index 81c33fa..f09db3a 100644 --- a/0.6.x/js/02_dom/20_XNode.js +++ b/0.6.x/js/02_dom/20_XNode.js @@ -1202,7 +1202,7 @@ function X_Node_call( name /*, opt_args... */ ){ var args = arguments, l = args.length - 1, v, raw, parent, body, - childX, childY, childW, childH, + child, childX, childY, childW, childH, parentW, parentH, parentSX, parentSY, parentSW, parentSH, visibleX, visibleY, visibleW, visibleH, @@ -1258,6 +1258,7 @@ function X_Node_call( name /*, opt_args... */ ){ }; if( name === 'inView' ){ + if( !( this[ '_flags' ] & X_NodeFlags_IN_TREE ) ) return { 'isInView' : false }; body = X_elmBody; child = raw; visibleX = visibleY = visibleW = visibleH = 0; @@ -1407,6 +1408,9 @@ function X_Node_startUpdate( time ){ removal.length = 0; }; + + X_UA[ 'IE5' ] && ( X_elmBody.style.visibility = 'hidden' ); + if( X_Node_html[ '_flags' ] & X_Node_BitMask_IS_DIRTY ){ X_Node__commitUpdate( X_Node_html, X_Node_html[ '_rawObject' ].parentNode, null, X_Node_html[ '_flags' ], 1, xnodesIEFilterFixAfter = [] ); } else { @@ -1414,6 +1418,8 @@ function X_Node_startUpdate( time ){ X_Node__commitUpdate( X_Node_body, X_Node_body[ '_rawObject' ].parentNode, null, X_Node_body[ '_flags' ], 1, xnodesIEFilterFixAfter = [] ); }; + X_UA[ 'IE5' ] && ( X_elmBody.style.visibility = '' ); + if( X_Node_updateReservedByReleaseGPU ){ X_Node_reserveUpdate(); X_Node_updateReservedByReleaseGPU = false; @@ -1448,13 +1454,13 @@ function X_Node_startUpdate( time ){ */ var X_Node__commitUpdate = X_UA_DOM.W3C ? - ( function( that, parentElement, nextElement, accumulatedFlags, ie8opacity, xnodesIEFilterFixAfter ){ + ( function( that, parentElement, nextElement, accumulatedFlags, ie8AccumulatedOpcity, xnodesIEFilterFixAfter ){ var elm = that[ '_rawObject' ], - created, xnodes, l, next, anime, v; + created, xnodes, l, next, anime, v, currentOpcity; // 1. GPU 一切の更新をスキップ if( that[ '_flags' ] & X_NodeFlags_GPU_NOW ){ - console.log( '更新のskip ' + !!( that[ '_flags' ] & X_Node_BitMask_IS_DIRTY ) ); + console.log( '更新のskip ' + that[ '_className' ] + !!( that[ '_flags' ] & X_Node_BitMask_IS_DIRTY ) ); that[ '_flags' ] & X_Node_BitMask_IS_DIRTY && X_Node__updateRawNode( that, elm ); return elm; }; @@ -1583,12 +1589,13 @@ var X_Node__commitUpdate = }; // ie8 では子要素に opacity が反映されないため、親要素の opacity を積算する - ie8opacity = ie8opacity * ( that[ '_css' ] && 0 <= that[ '_css' ].opacity ? that[ '_css' ].opacity : 1 ); + currentOpcity = that[ '_css' ] && 0 <= that[ '_css' ].opacity && that[ '_css' ].opacity; + ie8AccumulatedOpcity = ie8AccumulatedOpcity * ( currentOpcity || 1 ); // 8. 更新の適用 if( accumulatedFlags & X_Node_BitMask_IS_DIRTY ){ delete that[ '_fontSize' ]; - X_Node__updateRawNode( that, elm, ie8opacity, accumulatedFlags ); + X_Node__updateRawNode( that, elm, currentOpcity, ie8AccumulatedOpcity, accumulatedFlags ); }; // 9. ie5 only @@ -1612,7 +1619,7 @@ var X_Node__commitUpdate = // 10. 子要素の更新。 if( ( xnodes = that[ '_xnodes' ] ) && ( l = xnodes.length ) ) { for( ; l; ){ - next = X_Node__commitUpdate( xnodes[ --l ], elm, next, accumulatedFlags, ie8opacity, xnodesIEFilterFixAfter ); + next = X_Node__commitUpdate( xnodes[ --l ], elm, next, accumulatedFlags, ie8AccumulatedOpcity, xnodesIEFilterFixAfter ); }; }; @@ -1627,7 +1634,8 @@ var X_Node__commitUpdate = }; }; - if( ( anime = that[ '_anime' ] ) && 6 <= anime.phase && anime.doScroll ){ +/* + * if( ( anime = that[ '_anime' ] ) && 6 <= anime.phase && anime.doScroll ){ if( anime.phase === 6 ){ v = anime.fromScrollX; if( v === v ){ @@ -1646,13 +1654,14 @@ var X_Node__commitUpdate = elm.scrollTop = anime.scrollY; }; }; + */ return elm; }) : X_UA_DOM.IE4 ? ( function( that, parentElement, prevElement, accumulatedFlags ){ var elm = that[ '_rawObject' ] || X_Node__ie4getRawNode( that ), - xnodes, l, i, dirty, mix, html, text, prev; + xnodes, l, i, dirty, mix, html, text, prev, anime, v; if( !that[ '_tag' ] ){ that[ '_flags' ] & X_NodeFlags_DIRTY_CONTENT && X_Node__updateRawNode( that, elm ); @@ -1769,9 +1778,9 @@ var X_Node__commitUpdate = */ var X_Node__updateRawNode = X_UA_DOM.W3C ? - ( function( that, elm, ie8opacity, accumulatedFlags ){ + ( function( that, elm, currentOpcity, ie8AccumulatedOpcity, accumulatedFlags ){ var // flags = that[ '_flags' ], - attrs, rename, k, v, memory, f; + attrs, rename, k, v, f; // textNode if( !that[ '_tag' ] ){ @@ -1847,11 +1856,9 @@ var X_Node__updateRawNode = }; if( accumulatedFlags & X_NodeFlags_IE8_OPACITY_FIX ){ - memory = that[ '_css' ] && that[ '_css' ].opacity; - f = true; - if( 0 <= memory && memory < 1 ){ - //if( !that[ '_css' ] ) that[ '_css' ] = {}; - that[ '_css' ].opacity = ie8opacity; + if( 0 <= currentOpcity ){ + f = true; + that[ '_css' ].opacity = ie8AccumulatedOpcity; if( that[ '_flags' ] & X_NodeFlags_DIRTY_CSS ){ that[ '_flags' ] |= X_NodeFlags_OLD_CSSTEXT; } else @@ -1889,13 +1896,7 @@ var X_Node__updateRawNode = * IE8でfilter:alphaの指定がposition:relative,position:absoluteの子要素に継承されない問題 */ if( f ){ - if( 0 <= memory ){ - that[ '_css' ].opacity = memory; - } else { - //elm.style.filter = 'inherit'; - //delete that[ '_css' ].opacity; - //if( X_Object_isEmpty( that[ '_css' ] ) ) delete that[ '_css' ]; - }; + that[ '_css' ].opacity = currentOpcity; }; that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;