OSDN Git Service

Version 0.6.141, fix X.UI.ScrollBox.
authoritozyun <itozyun@user.sourceforge.jp>
Mon, 20 Apr 2015 04:45:22 +0000 (13:45 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Mon, 20 Apr 2015 04:45:22 +0000 (13:45 +0900)
21 files changed:
0.6.x/css/xui.css
0.6.x/index.html
0.6.x/js/01_core/02_XUA.js
0.6.x/js/01_core/10_XCallback.js
0.6.x/js/01_core/16_XViewPort.js
0.6.x/js/02_dom/10_XNodeAnime.js
0.6.x/js/05_util/01_XNinjaIframe.js
0.6.x/js/06_net/01_XNetXHR.js
0.6.x/js/20_ui/00_XUI.js
0.6.x/js/20_ui/02_XUI_Attr.js
0.6.x/js/20_ui/04_XUI_Event.js
0.6.x/js/20_ui/05_XUI_Gesture.js
0.6.x/js/20_ui/06_AbstractUINode.js
0.6.x/js/20_ui/08_Box.js
0.6.x/js/20_ui/11_VBox.js
0.6.x/js/20_ui/12_HBox.js
0.6.x/js/20_ui/13_TileBox.js
0.6.x/js/20_ui/14_ChromeBox.js
0.6.x/js/20_ui/15_ScrollBox.js
0.6.x/js/20_ui/17_Text.js
0.6.x/js/20_ui/20_PageRoot.js

index 2cec8d3..aca363e 100644 (file)
                width    : 100%;\r
                height   : 100%;\r
                overflow : hidden;\r
-               margin      : 0;\r
-               padding     : 0;/* opera 8 */\r
-               border      : 0;\r
+               margin   : 0;\r
+               padding  : 0;/* opera 8 */\r
+               border   : 0;\r
        }\r
 \r
-       body {\r
+       .IE5x body,\r
+       .IE6 body,\r
+       .IE7 body,\r
+       .IE8 body {\r
                font-size : 16px; /* px 指定しないと ie8- で要素のサイズが狂う */\r
        }\r
 \r
+       /*\r
+        * http://loconet.web2.jp/blog/archives/2007/02/cssfontfamily.html\r
+        */\r
+       body, textarea {\r
+               font-family:'ヒラギノ角ゴ Pro W3','Hiragino Kaku Gothic Pro','メイリオ',Meiryo,'MS Pゴシック',sans-serif;\r
+       }\r
+       .IE5x body, .IE5x textarea,\r
+       .IE6  body, .IE6  textarea,  {\r
+               font-family: 'MS Pゴシック',sans-serif;\r
+       }\r
+\r
 .PageRoot {\r
        height   : 100%;\r
 }\r
        -khtml-box-sizing  : border-box;\r
        -webkit-box-sizing : border-box;*/\r
 /* browser bug fix */\r
-       -moz-opacity       : 0.99;\r
+\r
        zoom               : 1;\r
-       \r
-       *word-break        : break-all;  /* ie5+ */\r
+\r
        word-wrap          : break-word; /* IE5.5?5?, Firefox3.5, Chrome1 Opera10.5 Safari1 */\r
        white-space        : pre;           /* CSS 2.0 */\r
        white-space        : pre-wrap;      /* CSS 2.1 */\r
        /* white-space : -pre-wrap;     Opera 4-6 */\r
        white-space        : -o-pre-wrap;   /* Opera 7 */\r
        white-space        : -moz-pre-wrap; /* Mozilla */\r
-       /* white-space : -hp-pre-wrap;  HP Printers */\r
-       white-space        : normal\9;   /* ie系では、 float要素へ回り込みする、 white-space の効いているテキストの位置が狂う */\r
+       /* white-space : -hp-pre-wrap;  HP Printers */   \r
+}\r
+.IE5x .PageRoot, .IE5x .PageRoot div,\r
+.IE6  .PageRoot, .IE6  .PageRoot div,\r
+.IE7  .PageRoot, .IE7  .PageRoot div, {\r
+       word-break  : break-all;  /* ie5+ */\r
+}\r
+.IE .PageRoot, .IE .PageRoot div {\r
+       white-space : normal/* ie系では、 float要素へ回り込みする、 white-space の効いているテキストの位置が狂う */\r
 }\r
 \r
 * {zoom:1}\r
                        tap-highlight-color : rgba(0,0,0,0);\r
                -webkit-tap-highlight-color : rgba(0,0,0,0);\r
        }\r
-       .ActiveX-enabled .mouse-operation-catcher {\r
+       .ActiveX .mouse-operation-catcher {\r
                background-color : #fff;\r
                filter           : alpha( opacity=0 );\r
        }\r
  * see http://qiita.com/sou/items/5688d4e7d3a37b4e2ff1\r
 --------------------------------------------------------------------------------------*/\r
        #fps-slowdown-make-sound-noisy {\r
-               width: 0px;\r
-               height: 0px;\r
-               position: absolute;\r
-               -webkit-animation-name: anim-void;\r
-               -webkit-animation-duration: 1s;\r
-               -webkit-animation-iteration-count: infinite;\r
+               width                             : 0px;\r
+               height                            : 0px;\r
+               position                          : absolute;\r
+               -webkit-animation-name            : anim-void;\r
+               -webkit-animation-duration        : 1s;\r
+               -webkit-animation-iteration-count : infinite;\r
        }\r
        @-webkit-keyframes anim-void {\r
                from {\r
index b18a5e2..eac273a 100644 (file)
@@ -16,6 +16,7 @@
 \r
 \r
 <script type="text/javascript" src="js/20_ui/00_XUI.js"></script>\r
+<script type="text/javascript" src="js/20_ui/01_XUI_LayoutBase.js"></script>\r
 <script type="text/javascript" src="js/20_ui/02_XUI_Attr.js"></script>\r
 <script type="text/javascript" src="js/20_ui/04_XUI_Event.js"></script>\r
 <script type="text/javascript" src="js/20_ui/05_XUI_Gesture.js"></script>\r
index ecdbe23..52da87e 100644 (file)
@@ -9,7 +9,8 @@
  * @alias X.UA\r
  * @type {object}\r
  */\r
-var X_UA = X[ 'UA' ] = {};\r
+var X_UA = X[ 'UA' ] = {},\r
+       X_UA_classNameForHTML = 'js-enabled ';\r
 \r
 (function(){\r
        var dua  = navigator.userAgent,\r
@@ -289,62 +290,73 @@ var X_UA = X[ 'UA' ] = {};
                 * @alias X.UA.IECompat\r
                 * @type {number}\r
                 */\r
-               X_UA[ 'IECompat' ] = /* v !== X_UA[ '_IE' ] || */ tridentToVer !== X_UA[ '_IE' ] && tridentToVer;\r
+               if( v = tridentToVer !== X_UA[ '_IE' ] && tridentToVer ) X_UA[ 'IECompat' ] = v;\r
                /**\r
                 * @alias X.UA.IE4\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE4' ]      = v && v < 5;\r
+               if( v && v < 4.5 ) X_UA[ 'IE4' ] = true;\r
+               /**\r
+                * @alias X.UA.IE45\r
+                * @type {boolean}\r
+                */\r
+               if( v && 4.5 <= v && v < 5 ) X_UA[ 'IE45' ] = true;\r
+               /**\r
+                * @alias X.UA.IE4x\r
+                * @type {boolean}\r
+                */\r
+               if( X_UA[ 'IE4' ] || X_UA[ 'IE45' ] ) X_UA[ 'IE4x' ] = true;\r
                /**\r
                 * @alias X.UA.IE5\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE5' ]      = 5 <= v && v < 5.5;\r
+               if( 5 <= v && v < 5.5 ) X_UA[ 'IE5' ] = true;\r
                /**\r
                 * @alias X.UA.IE55\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE55' ]     = 5.5 <= v && v < 6;\r
+               if( 5.5 <= v && v < 6 ) X_UA[ 'IE55' ] = true;\r
                /**\r
                 * @alias X.UA.IE5x\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE5x' ]     = X_UA[ 'IE5' ] || X_UA[ 'IE55' ];\r
+               if( X_UA[ 'IE5' ] || X_UA[ 'IE55' ] ) X_UA[ 'IE5x' ] = true;\r
                /**\r
                 * @alias X.UA.IE6\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE6' ]      = 6 <= v && v < 7;\r
+               if( 6 <= v && v < 7 ) X_UA[ 'IE6' ] = true;\r
                /**\r
                 * @alias X.UA.IE7\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE7' ]      = 7 <= v && v < 8;\r
+               if( 7 <= v && v < 8 ) X_UA[ 'IE7' ] = true;\r
                /**\r
                 * @alias X.UA.IE8\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE8' ]      = 8 <= v && v < 9;\r
+               if( 8 <= v && v < 9 ) X_UA[ 'IE8' ] = true;\r
                /**\r
                 * @alias X.UA.IE9\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE9' ]      = 9 <= v && v < 10;\r
+               if( 9 <= v && v < 10 ) X_UA[ 'IE9' ] = true;\r
                /**\r
                 * @alias X.UA.MacIE\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'MacIE' ]    = X_UA[ 'Mac' ];\r
+               if( X_UA[ 'Mac' ] ) X_UA[ 'MacIE' ] = true;\r
                /**\r
                 * @alias X.UA.IEMobile\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IEMobile' ] = dua.toLowerCase().indexOf( 'iemobile' ) !== -1 || X_UA[ 'WinCE' ];\r
+               if( dua.toLowerCase().indexOf( 'iemobile' ) !== -1 || X_UA[ 'WinCE' ] ) X_UA[ 'IEMobile' ] = true;\r
                /**\r
                 * @alias X.UA.WinPhone\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'WinPhone' ] = dua.toLowerCase().indexOf( 'windows phone' ) !== -1 || 0 < dav.indexOf( 'ZuneWP' ); // ZuneWP は IEM のデスクトップモードで登場する\r
+               if( dua.toLowerCase().indexOf( 'windows phone' ) !== -1 || 0 < dav.indexOf( 'ZuneWP' ) ) X_UA[ 'WinPhone' ] = true; // ZuneWP は IEM のデスクトップモードで登場する\r
+               \r
                console.log( '>> IE : ' + v + ' ActiveX : ' + X_UA[ 'ActiveX' ] );\r
                // TODO XBox360, XBox1, Modern or Desktop, Standalone\r
                return;\r
@@ -600,6 +612,45 @@ var X_UA = X[ 'UA' ] = {};
                };\r
 })();\r
 \r
+(function(){\r
+       var k, v;\r
+       if( X_UA[ 'IE45' ] || X_UA[ 'IE4' ] ){\r
+               if( X_UA[ 'Mac' ] ){\r
+                       X_UA_classNameForHTML = 'Mac';\r
+               } else\r
+               if( X_UA[ 'WinCE' ] ){\r
+                       // TODO CE3 の ie4 と WM の ie4 の分岐\r
+                       X_UA_classNameForHTML = 'WinCE';\r
+               } else\r
+               if( X_UA[ 'Win' ] ){\r
+                       X_UA_classNameForHTML = 'Win';\r
+               } else {\r
+                       X_UA_classNameForHTML = 'Other';\r
+               };              \r
+               \r
+               X_UA_classNameForHTML += 'IE4';\r
+               \r
+               if( X_UA[ 'IE45' ] ){\r
+                       X_UA_classNameForHTML += '5';\r
+               };\r
+\r
+               if( X_UA[ 'ActiveX' ] ){\r
+                       X_UA_classNameForHTML += 'ActiveX';\r
+               };\r
+               \r
+       } else {\r
+               for( k in X_UA ){\r
+                       v = X_UA[ k ];\r
+                       if( v ){\r
+                               X_UA_classNameForHTML += k + ' ';\r
+                               if( v !== true ){\r
+                                       X_UA_classNameForHTML += k + v + ' ';\r
+                               };\r
+                       };\r
+               };              \r
+       };\r
+})();\r
+\r
 var X_UA_DOM   = {},\r
        X_UA_EVENT = {},\r
        X_UA_HID   = {};\r
index a8dd6a3..15efe24 100644 (file)
@@ -152,11 +152,10 @@ X[ 'Callback' ] = {
         * またフレームワーク内で定義されたデフォルト動作の回避にも使用される。\r
         */\r
        'PREVENT_DEFAULT'  : X_Callback_PREVENT_DEFAULT,\r
+       \r
        /**\r
         * X.UI に於いて、ポインターイベントの戻り値に指定すると、以降のポインターベントを独占する。\r
         */\r
-       'MONOPOLY'         : X_Callback_MONOPOLY,\r
-       \r
        'CAPTURE_POINTER'  : X_Callback_CAPTURE_POINTER,\r
        \r
        'RELEASE_POINTER'  : X_Callback_RELEASE_POINTER\r
index a6eddb8..8207644 100644 (file)
@@ -9,7 +9,8 @@ var X_ViewPort_readyState,
        X_ViewPort_vScrollbarSize,
        X_ViewPort_hScrollbarSize,
        
-       X_Dom_detectFontSize = !( X_UA[ 'IE' ] < 9 || X_UA[ 'iOS' ] ) && function(){
+       X_ViewPort_useDetectionLoop = X_UA[ 'IE' ] < 9 || X_UA[ 'iOS' ],
+       X_ViewPort_detectFontSize = !X_ViewPort_useDetectionLoop && function(){
                        var size = X_Node_fontSizeNode[ '_rawObject' ].offsetHeight;
                        if( X_ViewPort_baseFontSize !== size ){
                                X_ViewPort_baseFontSize = size;
@@ -18,7 +19,7 @@ var X_ViewPort_readyState,
        },
 
        X_ViewPort_orientationFlag,     
-       X_Dom_orientationchange = window[ 'orientation' ] !== undefined && function( e ){
+       X_ViewPort_orientationchange = window[ 'orientation' ] !== undefined && function( e ){
                X_ViewPort_orientationFlag = true;
                !X_UA[ 'Android' ] && X_ViewPort_resize();
                //console.log( '-- orientationchange : ' + X[ 'ViewPort' ][ 'getSize' ][ 0 ] + ' ' + X[ 'ViewPort' ][ 'getSize' ][ 1 ] );
@@ -224,7 +225,7 @@ X[ 'ViewPort' ] = {
  */
                var X_ViewPort_resize =
                        // iOS もループで回す,,,iOS3.1.3, iOS6 で確認
-                       X_UA[ 'IE' ] < 9 || X_UA[ 'iOS' ] ?
+                       X_ViewPort_useDetectionLoop ?
                                (function(){
                                        var size;
                                        if( !X_ViewPort_lock ){
@@ -232,7 +233,7 @@ X[ 'ViewPort' ] = {
                                                if( X_ViewPort_width !== size[ 0 ] || X_ViewPort_height !== size[ 1 ] ){
                                                        X_ViewPort_width = size[ 0 ];
                                                        X_ViewPort_height = size[ 1 ];
-                                                       X_Timer_once( 100, X_Dom_detectFinishResizing );
+                                                       X_Timer_once( 100, X_ViewPort_detectFinishResizing );
                                                        X_ViewPort_lock = true;
                                                };
                                        };
@@ -247,16 +248,16 @@ X[ 'ViewPort' ] = {
                                (function( e ){
                                        console.log( '-- resize : ' + X_Timer_now() );
                                        
-                                       !X_ViewPort_lock && ( X_ViewPort_lock = true ) && X_Timer_once( 100, X_Dom_detectFinishResizing );
+                                       !X_ViewPort_lock && ( X_ViewPort_lock = true ) && X_Timer_once( 100, X_ViewPort_detectFinishResizing );
                                        return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;
                                });
                
-               function X_Dom_detectFinishResizing(){
+               function X_ViewPort_detectFinishResizing(){
                        var size = X_ViewPort_getWindowSize();
                        if( X_ViewPort_width !== size[ 0 ] || X_ViewPort_height !== size[ 1 ] ){
                                X_ViewPort_width  = size[ 0 ];
                                X_ViewPort_height = size[ 1 ];
-                               X_Timer_once( 100, X_Dom_detectFinishResizing );
+                               X_Timer_once( 100, X_ViewPort_detectFinishResizing );
                        } else {
                                console.log( '-- detectFinishResizing : ' + X_Timer_now() );
                                
@@ -293,7 +294,7 @@ X[ 'ViewPort' ] = {
 
                        X_ViewPort_rootElement = document.compatMode !== 'CSS1Compat' ? elmBody : elmHtml || elmBody;
 
-                       html = X[ 'Doc' ][ 'html' ] = X_Node_html = elmHtml && new Node( elmHtml );
+                       html = X[ 'Doc' ][ 'html' ] = X_Node_html = elmHtml && new Node( elmHtml ).removeClass( 'js-disabled' ).addClass( X_UA_classNameForHTML );
                        html[ '_flags' ] |= X_Node_State.IN_TREE;
                        
                        head = X[ 'Doc' ][ 'head' ] = X_Node_head = elmHead && new Node( elmHead );
@@ -359,13 +360,13 @@ X[ 'ViewPort' ] = {
                                };
                                
                                //
-                               if( X_Dom_orientationchange ){
-                                       X_EventDispatcher_systemListen( X_ViewPort, 'orientationchange', X_Dom_orientationchange );
+                               if( X_ViewPort_orientationchange ){
+                                       X_EventDispatcher_systemListen( X_ViewPort, 'orientationchange', X_ViewPort_orientationchange );
                                };
                                
-                               if( X_Dom_detectFontSize ){
+                               if( X_ViewPort_detectFontSize ){
                                        X_EventDispatcher_systemListen( X_ViewPort, 'resize', X_ViewPort_resize );
-                                       X_Timer_add( 333, X_Dom_detectFontSize );
+                                       X_Timer_add( 333, X_ViewPort_detectFontSize );
                                } else {
                                        X_Timer_add( 333, X_ViewPort_resize );
                                };
@@ -402,8 +403,10 @@ X[ 'ViewPort' ] = {
                };
 
                function X_ViewPort_getWindowSize(){
-                       return X_UA[ 'IE' ] ?
+                       return X_UA[ 'IE' ] ? // Opera10.1 では ズーム時に表示領域のサイズが取れない!
                                [ X_ViewPort_rootElement.clientWidth, X_ViewPort_rootElement.clientHeight ] :
+                               X_UA[ 'Opera' ] < 12 ? // Opera10.1 では ズーム + resize 時に表示領域のサイズが取れない!
+                               [ X_ViewPort_rootElement.offsetWidth, X_ViewPort_rootElement.offsetHeight ] :
                                [ window.innerWidth, window.innerHeight ];
                };
 
index 56c8adf..a7b8450 100644 (file)
@@ -68,7 +68,7 @@ var X_Node_ANIMATIONS            = [],
        /* GPUレイヤーにいる間に要素のコンテンツを変更をすると transitionend が動かなくなるっぽい Mac safari と firefox, 手当てが済むまでここは常に false */\r
        X_Node_Anime_translateZ      = X_Node_CSS_VENDER_PREFIX[ 'perspective' ] && !X_UA[ 'OperaMobile' ] && !X_UA[ 'OperaTablet' ] ? ' translateZ(0)' : '',\r
        /* Opera12(XP,8.1) 切った方がスムース, win Safari3 で、たまに動作が止まってしまう、、、 */\r
-       X_Node_Anime_hasTransition   = !!X_Node_CSS_VENDER_PREFIX[ 'transitionDelay' ] && !X_UA[ 'Opera' ] && !( X_UA[ 'Webkit' ]  <= 528.16 ),\r
+       X_Node_Anime_hasTransition   = !!X_Node_CSS_VENDER_PREFIX[ 'transitionDelay' ] && !X_UA[ 'Opera' ], // && !( X_UA[ 'Webkit' ]  <= 528.16 ),\r
        X_Node_Anime_transitionProps = X_Node_Anime_hasTransform ? X_Node_CSS_VENDER_PREFIX[ 'transform' ] : 'left,top',\r
        // transitionEnd イベント中に要素の更新( X_Node_startUpdate() )ができるか?\r
        // iOS3+4 では可能、iOS6.1.5 で不可。TODO iOS5 及び他の環境で調査。ダメな場合、anime.html が正しく描画されない。\r
index 2eeaaa9..f400818 100644 (file)
@@ -1,6 +1,9 @@
 /*\r
  * http://msdn.microsoft.com/ja-jp/library/ie/hh180174%28v=vs.85%29.aspx\r
  * 孤立するとウィンドウ オブジェクトのプロパティが消去される\r
+ * \r
+ * http://qiita.com/sou/items/3380d4fa9b08b27bb387\r
+ * モバイルブラウザでの iframe の挙動(Mobile Safari, Chrome for Android)\r
  */\r
 \r
 // TODO Node.inherits\r
index 4f3ca4a..8435371 100644 (file)
@@ -33,8 +33,8 @@ Android1.6- の XHR で 401 エラーが返った場合は、iframe に xml を
 var // Opera7.6+, Safari1.2+, khtml3.?+, Gecko0.9.7+\r
        // ie7 ではローカルリソースには ActiveX の XHR を使う\r
        X_Net_XHR_W3C      = ( !X_UA[ 'IE7' ] || !X_URL_IS_LOCAL ) && window[ 'XMLHttpRequest' ] && new XMLHttpRequest(),\r
-       X_Net_XHR_progress = false && X_Net_XHR_W3C && X_Net_XHR_W3C.onprogress !== undefined,\r
-       X_Net_XHR_upload   = false && X_Net_XHR_W3C && !!X_Net_XHR_W3C.upload,\r
+       X_Net_XHR_progress = X_Net_XHR_W3C && X_Net_XHR_W3C.onprogress !== undefined,\r
+       X_Net_XHR_upload   = X_Net_XHR_W3C && !!X_Net_XHR_W3C.upload,\r
        \r
        X_Net_XHR_X_DOMAIN = window[ 'XDomainRequest' ] && new XDomainRequest(),\r
        X_Net_XHR_VERSION  = 0,\r
index 4212773..3f03b2a 100644 (file)
  */\r
 \r
 X.UI = {\r
-       State : {\r
-               DEFAULT     : 0,\r
-               HOVER       : 1,\r
-               FOCUSED     : 2,\r
-               DISABLED    : 4,\r
-               CHECKED     : 8,\r
-               FIRST_CHILD : 16,\r
-               LAST_CHILD  : 32\r
-       },\r
        \r
-       Dirty : {\r
-               CLEAN   : 0,\r
-               PAINT   : 1, // 再描画のみ必要\r
-               LAYOUT  : 2, // レイアウト(ボックスサイズ)の再計算が必要\r
-               FONT    : 3, // フォントサイズが変更された\r
-               CONTENT : 4  // コンテンツが変更された\r
-       },\r
-       \r
-       currentRootData : null,\r
-       \r
-       Layout : {\r
-               Base : X_Class_create(\r
-                       'X.UI.Layout.Base',\r
-                       {\r
-                               overrideAttrsForSelf  : null,\r
-                               overrideAttrsForChild : null,\r
-                               calculate             : X_emptyFunction //function( data, isNeedsDetection, x, y, w, h )\r
-                       }\r
-               ),\r
-               create : function( props ){\r
-                       return X_Class_override( new X.UI.Layout.Base, props, true );\r
-               }\r
-       }\r
+       currentRootData : null\r
 };\r
 \r
 /*\r
index 846a2e2..4908ed3 100644 (file)
@@ -1,14 +1,11 @@
-X.UI.Attr = {\r
-       AUTO  : 1/0,//Number.POSITIVE_INFINITY,\r
-       FLOOR : new Function( 'v', 'return 0 <= v ? v | 0 : -( -v | 0 )' ),\r
-       \r
-       USER : {\r
-               XNODE  : 0,\r
+var XUI_Attr_AUTO = 1/0,//Number.POSITIVE_INFINITY,\r
+       XUI_Attr_FLOOR = new Function( 'v', 'return 0 <= v ? v | 0 : -( -v | 0 )' ),\r
+       XUI_Attr_USER = {\r
+               XNODE  : 0, // 値は xnode.css にコピーされます。\r
                UINODE : 1, // 値は _uinode にコピーされます。\r
-               LAYOUT : 2\r
+               LAYOUT : 2  // \r
        },\r
-       \r
-       Type : {\r
+       XUI_Attr_Type = {\r
                LIST              : 16384,\r
                LENGTH            :     1, // '1.5em'\r
                MINUS_LENGTH      :     2,\r
@@ -26,8 +23,7 @@ X.UI.Attr = {
                DEFAULT_ONLY      :  4096,\r
                INIT_ONLY         :  8192\r
        },\r
-       \r
-       Option : {\r
+       XUI_Attr_Option = {\r
                BORDER_STYLE      : 'none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset',\r
                ALIGN             : 'left,center,right,justify',\r
                TEXT_DECORATION   : 'none,underline,overline,line-through,blink',\r
@@ -35,8 +31,7 @@ X.UI.Attr = {
                BOX_SIZING        : 'content,padding,border',\r
                CURSOR            : 'pointer,wait'\r
        },\r
-       \r
-       CSS3 : {\r
+       XUI_Attr_CSS3 = {\r
                opacity         : true,\r
                bgColorAlpha    : true,\r
                bgGradient      : true,\r
@@ -49,15 +44,79 @@ X.UI.Attr = {
                textShadowBlur  : true,\r
                textShadowAlpha : true\r
        },\r
-       \r
-       Rename : {\r
+       XUI_Attr_Rename = {\r
                bgColor       : 'background-color',\r
                fontColor     : 'color',\r
                fontBold      : 'fontWeight',\r
                fontItalic    : 'fontStyle',\r
                fontSmallCaps : 'fontVariant'\r
-       }\r
-};\r
+       },\r
+\r
+/*\r
+ * 0: 初期値 : undefined は不可!\r
+ * 1: dirty\r
+ * 2: この attr を処理する人\r
+ * 3: 受け付けるデータ型\r
+ * 4: 選択方式の場合、その候補\r
+ */\r
+       XUI_Attr_Support = XUI_Attr_createAttrDef( 0,\r
+{\r
+       className         : [ null,           XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.DEFAULT_ONLY | XUI_Attr_Type.STRING ],\r
+       pointerHoverClass : [ null,           XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.DEFAULT_ONLY | XUI_Attr_Type.STRING ],\r
+       pointerDownClass  : [ null,           XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.DEFAULT_ONLY | XUI_Attr_Type.STRING ],\r
+       invalidLayoutColor: [ null,           XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.DEFAULT_ONLY | XUI_Attr_Type.COLOR ],\r
+       \r
+       role              : [ 1,              XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.LIST, 'none,chrome' ],\r
+       selectable        : [ false,          XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.BOOLEAN ],\r
+       \r
+       visible           : [ true,           XUI_Dirty.LAYOUT, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ],\r
+       pointerEnabled    : [ false,          XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ],\r
+       pointerChildren   : [ true,           XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ],\r
+       cursor            : [ 1,              XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.LIST, XUI_Attr_Option.CURSOR ],\r
+       tooltip           : [ null,           XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.STRING ],\r
+       \r
+       borderWidth       : [ 0,              XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.QUARTET | XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT  ], // em [ top, right, bottom, left ]\r
+       padding           : [ 0,              XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.QUARTET | XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],\r
+       \r
+       width             : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+       minWidth          : [ 0,              XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],\r
+       maxWidth          : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+       height            : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+       minHeight         : [ 0,              XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],\r
+       maxHeight         : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+       sizing            : [ 1,              XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LIST, XUI_Attr_Option.BOX_SIZING ],\r
+       left              : [ null,           XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.MINUS_LENGTH | XUI_Attr_Type.MINUS_PERCENT ],\r
+       top               : [ null,           XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.MINUS_LENGTH | XUI_Attr_Type.MINUS_PERCENT ],\r
+       bottom            : [ null,           XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.MINUS_LENGTH | XUI_Attr_Type.MINUS_PERCENT ],\r
+       right             : [ null,           XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.MINUS_LENGTH | XUI_Attr_Type.MINUS_PERCENT ],        \r
+\r
+       borderColor       : [ 0x0,            XUI_Dirty.PAINT,  XUI_Attr_USER.XNODE,  XUI_Attr_Type.QUARTET | XUI_Attr_Type.COLOR   ], // color [ top, right, bottom, left ]\r
+       borderStyle       : [ 1,              XUI_Dirty.PAINT,  XUI_Attr_USER.XNODE,  XUI_Attr_Type.QUARTET | XUI_Attr_Type.LIST, XUI_Attr_Option.BORDER_STYLE ], // string [ top, right, bottom, left ]\r
+       bgColor           : [ 0xFFFFFF,       XUI_Dirty.PAINT,  XUI_Attr_USER.XNODE,  XUI_Attr_Type.COLOR     ], // color, none\r
+\r
+       fontColor         : [ 0x0,            XUI_Dirty.PAINT,  XUI_Attr_USER.XNODE, XUI_Attr_Type.COLOR     ],\r
+       fontFamily        : [ null,           XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.FONT_NAME ],\r
+       fontSize          : [ 1,              XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],\r
+       fontBold          : [ false,          XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.BOOLEAN, 'bold'   ],\r
+       fontItalic        : [ false,          XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.BOOLEAN, 'italic' ],\r
+       fontSmallCaps     : [ false,          XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.BOOLEAN, 'small-caps' ],\r
+       lineHeight        : [ 1,              XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.NUMERICAL ], // percent\r
+       letterSpacing     : [ 0,              XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.LENGTH    ],\r
+       wordSpacing       : [ 0,              XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.LENGTH    ],\r
+       textAlign         : [ 1,              XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.LIST, XUI_Attr_Option.ALIGN           ],\r
+       textDecoration    : [ 1,              XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.LIST, XUI_Attr_Option.TEXT_DECORATION ],\r
+       textTransform     : [ 1,              XUI_Dirty.FONT,   XUI_Attr_USER.XNODE, XUI_Attr_Type.LIST, XUI_Attr_Option.TEXT_TRANSFORM  ]\r
+}\r
+),\r
+\r
+/*\r
+ * 共通する attr 指定を prototype に設定しながら拡張できる、属性データ保持クラス\r
+ */\r
+\r
+XUI_attrClassProto = null,\r
+\r
+XUI_AttrClass = X_Class_create( 'XUI_AttrClass', X_Class.POOL_OBJECT );\r
+\r
 \r
        function XUI_Attr_createAttrDef( base, defs ){\r
                var F = base ? X_Object_clone( base ) : {},\r
@@ -74,12 +133,12 @@ X.UI.Attr = {
                        if( !base || !X_Type_isArray( base[ p ] ) ){\r
                                def.No = z += n;\r
                                // add\r
-                               n = def[ 3 ] & X.UI.Attr.Type.QUARTET ? 4 :\r
-                                   def[ 3 ] & X.UI.Attr.Type.COMBI   ? 2 : 1;\r
+                               n = def[ 3 ] & XUI_Attr_Type.QUARTET ? 4 :\r
+                                   def[ 3 ] & XUI_Attr_Type.COMBI   ? 2 : 1;\r
                        } else {\r
                                def.No = base[ p ].No;\r
                        };\r
-                       if( def[ 3 ] & X.UI.Attr.Type.LIST && X_Type_isString( def[ 4 ] ) ){\r
+                       if( def[ 3 ] & XUI_Attr_Type.LIST && X_Type_isString( def[ 4 ] ) ){\r
                                def[ 4 ] = XUI_createChecker( def[ 4 ] );\r
                        };\r
                };\r
@@ -87,73 +146,7 @@ X.UI.Attr = {
                return F;\r
        };\r
 \r
-/*\r
- * 0: 初期値 : undefined は不可!\r
- * 1: dirty\r
- * 2: この attr を処理する人\r
- * 3: 受け付けるデータ型\r
- * 4: 選択方式の場合、その候補\r
- */\r
-X.UI.Attr.Support = XUI_Attr_createAttrDef( 0,\r
-{\r
-       className         : [ null,           X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ],\r
-       pointerHoverClass : [ null,           X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ],\r
-       pointerDownClass  : [ null,           X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ],\r
-       invalidLayoutColor: [ null,           X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.COLOR ],\r
-       \r
-       role              : [ 1,              X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.LIST, 'none,chrome' ],\r
-       selectable        : [ false,          X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.BOOLEAN ],\r
-       \r
-       visible           : [ true,           X.UI.Dirty.LAYOUT, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],\r
-       pointerEnabled    : [ false,          X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],\r
-       pointerChildren   : [ true,           X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],\r
-       cursor            : [ 1,              X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.CURSOR ],\r
-       tooltip           : [ null,           X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.STRING ],\r
-       \r
-       borderWidth       : [ 0,              X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.QUARTET | X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT  ], // em [ top, right, bottom, left ]\r
-       padding           : [ 0,              X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.QUARTET | X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],\r
-       \r
-       width             : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-       minWidth          : [ 0,              X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],\r
-       maxWidth          : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-       height            : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-       minHeight         : [ 0,              X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],\r
-       maxHeight         : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-       sizing            : [ 1,              X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LIST, X.UI.Attr.Option.BOX_SIZING ],\r
-       left              : [ null,           X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.MINUS_LENGTH | X.UI.Attr.Type.MINUS_PERCENT ],\r
-       top               : [ null,           X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.MINUS_LENGTH | X.UI.Attr.Type.MINUS_PERCENT ],\r
-       bottom            : [ null,           X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.MINUS_LENGTH | X.UI.Attr.Type.MINUS_PERCENT ],\r
-       right             : [ null,           X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.MINUS_LENGTH | X.UI.Attr.Type.MINUS_PERCENT ],  \r
-\r
-       borderColor       : [ 0x0,            X.UI.Dirty.PAINT,  X.UI.Attr.USER.XNODE,  X.UI.Attr.Type.QUARTET | X.UI.Attr.Type.COLOR   ], // color [ top, right, bottom, left ]\r
-       borderStyle       : [ 1,              X.UI.Dirty.PAINT,  X.UI.Attr.USER.XNODE,  X.UI.Attr.Type.QUARTET | X.UI.Attr.Type.LIST, X.UI.Attr.Option.BORDER_STYLE ], // string [ top, right, bottom, left ]\r
-       bgColor           : [ 0xFFFFFF,       X.UI.Dirty.PAINT,  X.UI.Attr.USER.XNODE,  X.UI.Attr.Type.COLOR     ], // color, none\r
-\r
-       fontColor         : [ 0x0,            X.UI.Dirty.PAINT,  X.UI.Attr.USER.XNODE, X.UI.Attr.Type.COLOR     ],\r
-       fontFamily        : [ null,           X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.FONT_NAME ],\r
-       fontSize          : [ 1,              X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],\r
-       fontBold          : [ false,          X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'bold'   ],\r
-       fontItalic        : [ false,          X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'italic' ],\r
-       fontSmallCaps     : [ false,          X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'small-caps' ],\r
-       lineHeight        : [ 1,              X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.NUMERICAL ], // percent\r
-       letterSpacing     : [ 0,              X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH    ],\r
-       wordSpacing       : [ 0,              X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH    ],\r
-       textAlign         : [ 1,              X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.ALIGN           ],\r
-       textDecoration    : [ 1,              X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.TEXT_DECORATION ],\r
-       textTransform     : [ 1,              X.UI.Dirty.FONT,   X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.TEXT_TRANSFORM  ]\r
-}\r
-);\r
-\r
-/*\r
- * 共通する attr 指定を prototype に設定しながら拡張できる、属性データ保持クラス\r
- */\r
-\r
-X.UI.attrClassProto = null;\r
-\r
-X.UI.AttrClass = X_Class_create( 'X.UI.AttrClass', X_Class.POOL_OBJECT );\r
-\r
-\r
-X.UI.Attr.copy = function( proto, supports ){\r
+function XUI_Attr_copy( proto, supports ){\r
        var support, p;\r
        \r
        for( p in supports ){\r
@@ -161,33 +154,33 @@ X.UI.Attr.copy = function( proto, supports ){
                if( p === '_last' ) continue;\r
                support = supports[ p ];\r
                proto[ support.No ] = support[ 0 ];\r
-               if( support[ 3 ] & X.UI.Attr.Type.QUARTET ){\r
+               if( support[ 3 ] & XUI_Attr_Type.QUARTET ){\r
                        proto[ support.No + 1 ] = support[ 0 ];\r
                        proto[ support.No + 2 ] = support[ 0 ];\r
                        proto[ support.No + 3 ] = support[ 0 ];\r
                } else\r
-               if( support[ 3 ] & X.UI.Attr.Type.COMBI ){\r
+               if( support[ 3 ] & XUI_Attr_Type.COMBI ){\r
                        proto[ support.No + 1 ] = support[ 0 ];\r
                };\r
        };\r
 };\r
 \r
-X.UI.Attr.copy( X.UI.AttrClass.prototype, X.UI.Attr.Support );\r
+XUI_Attr_copy( XUI_AttrClass.prototype, XUI_Attr_Support );\r
 \r
-X.UI.Attr.preset = function( baseKlass, opt_supports, opt_attrs ){\r
+function XUI_Attr_preset( baseKlass, opt_supports, opt_attrs ){\r
        var klass = baseKlass.inherits(),\r
                proto = klass.prototype,\r
                p;\r
        \r
        // 属性プリセット\r
-       X.UI.Attr.copy( proto, opt_supports );\r
+       XUI_Attr_copy( proto, opt_supports );\r
        \r
        // setAttr に書き換え\r
-       X.UI.attrClassProto = proto;\r
+       XUI_attrClassProto = proto;\r
        for( p in opt_attrs ){\r
                if( X_EMPTY_OBJECT[ p ] ) continue;\r
-               opt_supports[ p ] && X.UI._AbstractUINode.prototype.setAttr( p, opt_supports[ p ], opt_attrs[ p ] );\r
+               opt_supports[ p ] && XUI_AbstractUINode.prototype.setAttr( p, opt_supports[ p ], opt_attrs[ p ] );\r
        };\r
-       X.UI.attrClassProto = null;\r
+       XUI_attrClassProto = null;\r
        return klass;\r
 };\r
index 8f38aae..97ddb1f 100644 (file)
@@ -1,5 +1,5 @@
 \r
-X.UI.Event = {\r
+var XUI_Event = X[ 'UI' ][ 'Event' ] = {\r
 \r
        INIT              : ++X_Event_last,\r
        ADDED             : ++X_Event_last,\r
@@ -119,10 +119,10 @@ X.UI.Event = {
        NameToID : {}\r
 };\r
 \r
-       X.UI.Event.IdToName[ X.UI.Event._POINTER_DOWN   ] = 'pointerdown';\r
-       X.UI.Event.IdToName[ X.UI.Event._POINTER_UP     ] = 'pointerup';\r
-       X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE   ] = 'pointermove';\r
-       X.UI.Event.IdToName[ X.UI.Event._POINTER_CANCEL ] = 'pointercancel';\r
+       XUI_Event.IdToName[ XUI_Event._POINTER_DOWN   ] = 'pointerdown';\r
+       XUI_Event.IdToName[ XUI_Event._POINTER_UP     ] = 'pointerup';\r
+       XUI_Event.IdToName[ XUI_Event._POINTER_MOVE   ] = 'pointermove';\r
+       XUI_Event.IdToName[ XUI_Event._POINTER_CANCEL ] = 'pointercancel';\r
 \r
 \r
 \r
@@ -131,5 +131,5 @@ X.UI.Event = {
                if( X_EMPTY_OBJECT[ p ] ) continue;\r
                NameToID[ IdToName[ p ] ] = p;\r
        };\r
-})( X.UI.Event.IdToName, X.UI.Event.NameToID );\r
+})( XUI_Event.IdToName, XUI_Event.NameToID );\r
 \r
index 1f7bd1f..3361dfa 100644 (file)
@@ -4,15 +4,12 @@
  *  Jorik Tangelder <j.tangelder@gmail.com>, MIT license\r
  **/\r
 \r
-( function( Math, window, document, undefined ){\r
        \r
        var ELEENT_LIST = [],\r
                HAMMER_LIST = [],\r
                POINTERS    = [],\r
                ABS = new Function( 'v', 'return v<0?-v:v' );\r
        \r
-       X.UI.Gesture = Hammer;\r
-       \r
        function Hammer( uinodeRoot, uinode, type ){\r
                this.uinode  = uinode;\r
                this.enabled = true;\r
                        pointerType, i, l, touches, ret, active, gesture, startEv,\r
                        hammer, deltaTime, deltaX, deltaY, velocity, center;\r
                \r
-               //console.log( 'Hammer@handleEvent ' + X.UI.Event.IdToName[ e.type ] + ' ' + e.pointerType + ' ' + type );\r
+               //console.log( 'Hammer@handleEvent ' + XUI_Event.IdToName[ e.type ] + ' ' + e.pointerType + ' ' + type );\r
                if( !type ) return;\r
                \r
-               //console.log( e.type + ' dw:' + X.UI.Event._POINTER_DOWN + ' up:' + X.UI.Event._POINTER_UP + ' mv:' + X.UI.Event._POINTER_MOVE );\r
+               //console.log( e.type + ' dw:' + XUI_Event._POINTER_DOWN + ' up:' + XUI_Event._POINTER_UP + ' mv:' + XUI_Event._POINTER_MOVE );\r
                \r
                if( e.pointerType ){\r
                        type |= POINTER;\r
@@ -70,7 +67,7 @@
                        enable_detect = true;\r
                };\r
 \r
-               //console.log( 'Hammer@handleEvent ' + IdToGestureID[ e.type ] + ' ' + e.type + ' ' + X.UI.Event._POINTER_DOWN + ' ' + enable_detect );\r
+               //console.log( 'Hammer@handleEvent ' + IdToGestureID[ e.type ] + ' ' + e.type + ' ' + XUI_Event._POINTER_DOWN + ' ' + enable_detect );\r
 \r
                // we are in a touch event, set the touch triggered bool to true,\r
                // this for the conflicts that may occur on ios and android\r
                        Detection.register( Gestures[ name ] );\r
                };\r
 \r
-               Hammer.EVENT_TYPES_START = [ X.UI.Event._POINTER_DOWN ];\r
-               types = [ X.UI.Event._POINTER_MOVE, X.UI.Event._POINTER_UP, X.UI.Event._POINTER_CANCEL ];\r
+               Hammer.EVENT_TYPES_START = [ XUI_Event._POINTER_DOWN ];\r
+               types = [ XUI_Event._POINTER_MOVE, XUI_Event._POINTER_UP, XUI_Event._POINTER_CANCEL ];\r
 \r
                // Add touch events on the document\r
                Utils.addEvents( uinodeRoot, types, Hammer.prototype.handleEvent );\r
                EVENT_TYPE_MASK   = START | MOVE | END,\r
                POINTER_TYPE_MASK = POINTER | TOUCH | MOUSE | PEN,\r
                IdToGestureID = {};\r
-       IdToGestureID[ X.UI.Event._POINTER_DOWN   ] = START;\r
-       IdToGestureID[ X.UI.Event._POINTER_MOVE   ] = MOVE;\r
-       IdToGestureID[ X.UI.Event._POINTER_UP     ] = END;\r
-       IdToGestureID[ X.UI.Event._POINTER_CANCEL ] = END;\r
+       IdToGestureID[ XUI_Event._POINTER_DOWN   ] = START;\r
+       IdToGestureID[ XUI_Event._POINTER_MOVE   ] = MOVE;\r
+       IdToGestureID[ XUI_Event._POINTER_UP     ] = END;\r
+       IdToGestureID[ XUI_Event._POINTER_CANCEL ] = END;\r
        \r
-       Utils = {\r
+       var Utils = {\r
                \r
                /**\r
                 * touch events with mouse fallback\r
         */\r
        var touch_triggered = false;\r
        \r
-       Detection = {\r
+       var Detection = {\r
                // contains all registred Gestures in the correct order\r
                gestures : [],\r
 \r
        Gestures.Hold = {\r
                name    : 'hold',\r
                index   : 10,\r
-               startID : X.UI.Event.HOLD,\r
-               endID   : X.UI.Event.HOLD_END,\r
+               startID : XUI_Event.HOLD,\r
+               endID   : XUI_Event.HOLD_END,\r
                defaults : {\r
                        hold_timeout   : 500,\r
                        hold_threshold : 1\r
                                        this.timerID && X_Timer_remove( this.timerID );\r
                                        if( Gestures.Hold.holding === true ){\r
                                                Gestures.Hold.holding = false;\r
-                                               return hammer.trigger( X.UI.Event.HOLD_END, e );\r
+                                               return hammer.trigger( XUI_Event.HOLD_END, e );\r
                                        };\r
                                        break;\r
                        };\r
                },\r
                _onTimer : function( e, hammer ){\r
                        if( Detection.current.name === 'hold' ){\r
-                               hammer.trigger( X.UI.Event.HOLD, e );\r
+                               hammer.trigger( XUI_Event.HOLD, e );\r
                                Gestures.Hold.holding = true;\r
                        };\r
                }\r
        Gestures.Tap = {\r
                name     : 'tap',\r
                index    : 100,\r
-               startID  : X.UI.Event.TAP,\r
-               endID    : X.UI.Event.DOUBLE_TAP,\r
+               startID  : XUI_Event.TAP,\r
+               endID    : XUI_Event.DOUBLE_TAP,\r
                defaults : {\r
                        tap_max_touchtime  : 250,\r
                        tap_max_distance   : 10,\r
 \r
                                // check if double tap\r
                                if( prev && prev.name === 'tap' && ( e.timeStamp - prev.lastEvent.timeStamp ) < hammer.options.doubletap_interval && e.distance < hammer.options.doubletap_distance ){\r
-                                       return hammer.trigger( X.UI.Event.DOUBLE_TAP, e );\r
+                                       return hammer.trigger( XUI_Event.DOUBLE_TAP, e );\r
                                } else\r
                                // do a single tap\r
                                if( hammer.options.tap_always && Detection.current.name !== 'tap' ){ // EventFire中にalert すると mouseleave で再び呼ばれるのを防ぐ\r
                                        Detection.current.name = 'tap';\r
-                                       return hammer.trigger( X.UI.Event.TAP, e );\r
+                                       return hammer.trigger( XUI_Event.TAP, e );\r
                                };\r
                        };\r
                }\r
        Gestures.Swipe = {\r
                name     : 'swipe',\r
                index    : 40,\r
-               startID  : X.UI.Event.SWIP,\r
-               endID    : X.UI.Event.SWIP_DOWN,\r
+               startID  : XUI_Event.SWIP,\r
+               endID    : XUI_Event.SWIP_DOWN,\r
                defaults : {\r
                        // set 0 for unlimited, but this can conflict with transform\r
                        swipe_max_touches : 1,\r
                                // or we can be already in dragging\r
                                if( hammer.options.swipe_velocity < e.velocityX || hammer.options.swipe_velocity < e.velocityY ){\r
                                        // trigger swipe events\r
-                                       hammer.trigger( X.UI.Event.SWIP, e );\r
+                                       hammer.trigger( XUI_Event.SWIP, e );\r
                                        hammer.trigger(\r
                                                e.direction === Hammer.DIRECTION_UP ?\r
-                                                       X.UI.Event.SWIP_UP :\r
+                                                       XUI_Event.SWIP_UP :\r
                                                e.direction === Hammer.DIRECTION_DOWN ?\r
-                                                       X.UI.Event.SWIP_DOWN :\r
+                                                       XUI_Event.SWIP_DOWN :\r
                                                e.direction === Hammer.DIRECTION_LEFT ?\r
-                                                       X.UI.Event.SWIP_LEFT :\r
-                                                       X.UI.Event.SWIP_RIGHT,\r
+                                                       XUI_Event.SWIP_LEFT :\r
+                                                       XUI_Event.SWIP_RIGHT,\r
                                                e\r
                                        );\r
                                };\r
        Gestures.Drag = {\r
                name     : 'drag',\r
                index    : 50,\r
-               startID  : X.UI.Event.DRAG,\r
-               endID    : X.UI.Event.DRAG_DOWN,\r
+               startID  : XUI_Event.DRAG,\r
+               endID    : XUI_Event.DRAG_DOWN,\r
                defaults : {\r
                        drag_min_distance : 10,\r
                        // set 0 for unlimited, but this can conflict with transform\r
                        // current gesture isnt drag, but dragged is true\r
                        // this means an other gesture is busy. now call dragend\r
                        if( Detection.current.name !== this.name && this.triggered ){\r
-                               hammer.trigger( X.UI.Event.DRAG_END, e );\r
+                               hammer.trigger( XUI_Event.DRAG_END, e );\r
                                this.triggered = false;\r
                                return;\r
                        };\r
 \r
                                        // first time, trigger dragstart event\r
                                        if( !this.triggered ){\r
-                                               hammer.trigger( X.UI.Event.DRAG_START, e );\r
+                                               hammer.trigger( XUI_Event.DRAG_START, e );\r
                                                this.triggered = true;\r
                                        };\r
 \r
                                        // trigger normal event\r
-                                       hammer.trigger( X.UI.Event.DRAG, e );\r
+                                       hammer.trigger( XUI_Event.DRAG, e );\r
 \r
                                        // direction event, like dragdown\r
                                        hammer.trigger(\r
                                                e.direction === Hammer.DIRECTION_UP ?\r
-                                                       X.UI.Event.DRAG_UP :\r
+                                                       XUI_Event.DRAG_UP :\r
                                                e.direction === Hammer.DIRECTION_DOWN ?\r
-                                                       X.UI.Event.DRAG_DOWN :\r
+                                                       XUI_Event.DRAG_DOWN :\r
                                                e.direction === Hammer.DIRECTION_LEFT ?\r
-                                                       X.UI.Event.DRAG_LEFT :\r
-                                                       X.UI.Event.DRAG_RIGHT,\r
+                                                       XUI_Event.DRAG_LEFT :\r
+                                                       XUI_Event.DRAG_RIGHT,\r
                                                e\r
                                        );\r
 \r
 \r
                                case END:\r
                                        // trigger dragend\r
-                                       this.triggered && hammer.trigger( X.UI.Event.DRAG_END, e );\r
+                                       this.triggered && hammer.trigger( XUI_Event.DRAG_END, e );\r
                                        this.triggered = false;\r
                                        break;\r
                        }\r
        Gestures.Transform = {\r
                name     : 'transform',\r
                index    : 45,\r
-               startID  : X.UI.Event.TRANSFORM,\r
-               endID    : X.UI.Event.ROTATE,\r
+               startID  : XUI_Event.TRANSFORM,\r
+               endID    : XUI_Event.ROTATE,\r
                defaults : {\r
                        // factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1\r
                        transform_min_scale : 0.01,\r
                        // current gesture isnt drag, but dragged is true\r
                        // this means an other gesture is busy. now call dragend\r
                        if( Detection.current.name !== this.name && this.triggered ){\r
-                               hammer.trigger( X.UI.Event.TRANSFORM_END, e );\r
+                               hammer.trigger( XUI_Event.TRANSFORM_END, e );\r
                                this.triggered = false;\r
                                return;\r
                        };\r
 \r
                                        // first time, trigger dragstart event\r
                                        if( !this.triggered ){\r
-                                               hammer.trigger( X.UI.Event.TRANSFORM_START, e );\r
+                                               hammer.trigger( XUI_Event.TRANSFORM_START, e );\r
                                                this.triggered = true;\r
                                        };\r
 \r
-                                       hammer.trigger( X.UI.Event.TRANSFORM, e );\r
+                                       hammer.trigger( XUI_Event.TRANSFORM, e );\r
                                        // basic transform event\r
 \r
                                        // trigger rotate event\r
-                                       hammer.options.transform_min_rotation < rotation_threshold && hammer.trigger( X.UI.Event.ROTATE, e );\r
+                                       hammer.options.transform_min_rotation < rotation_threshold && hammer.trigger( XUI_Event.ROTATE, e );\r
 \r
                                        // trigger pinch event\r
                                        if( scale_threshold > hammer.options.transform_min_scale ){\r
-                                               hammer.trigger( X.UI.Event.PINCH, e );\r
-                                               hammer.trigger( e.scale < 1 ? X.UI.Event.PINCH_IN : X.UI.Event.PINCH_OUT, e );\r
+                                               hammer.trigger( XUI_Event.PINCH, e );\r
+                                               hammer.trigger( e.scale < 1 ? XUI_Event.PINCH_IN : XUI_Event.PINCH_OUT, e );\r
                                        };\r
                                        break;\r
 \r
                                case END:\r
                                        // trigger dragend\r
-                                       this.triggered && hammer.trigger( X.UI.Event.TRANSFORM_END, e );\r
+                                       this.triggered && hammer.trigger( XUI_Event.TRANSFORM_END, e );\r
                                        this.triggered = false;\r
                                        break;\r
                        };\r
                        e.eventType === END && hammer.trigger( this.name, e );\r
                }\r
        };\r
-       \r
-})( Math, window, document );
\ No newline at end of file
index 9004773..249bec3 100644 (file)
@@ -1,9 +1,9 @@
-X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](\r
+var XUI_AbstractUINode = X_EventDispatcher[ 'inherits' ](\r
        'X.UI._AbstractUINode',\r
        X_Class.ABSTRACT | X_Class.PRIVATE_DATA,\r
        {\r
                phase             : 0,\r
-               dirty             : X.UI.Dirty.CLEAN,\r
+               dirty             : XUI_Dirty.CLEAN,\r
                \r
                root              : null,\r
                rootData          : null,\r
@@ -12,8 +12,8 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                parentData        : null,\r
                xnode             : null,\r
 \r
-               supportAttrs      : X.UI.Attr.Support,\r
-               attrClass         : X.UI.AttrClass,\r
+               supportAttrs      : XUI_Attr_Support,\r
+               attrClass         : XUI_AttrClass,\r
                attrObject        : null,\r
                unverifiedAttrs   : null,\r
                \r
@@ -32,31 +32,33 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                boxY              : 0,\r
                scrollWidth       : 0, // remove?\r
                scrollHeight      : 0, // remove?\r
-               boxWidth          : X.UI.Attr.AUTO,\r
+               boxWidth          : XUI_Attr_AUTO,\r
                minBoxWidth       : 0,\r
-               maxBoxWidth       : X.UI.Attr.AUTO,     \r
-               boxHeight         : X.UI.Attr.AUTO,\r
+               maxBoxWidth       : XUI_Attr_AUTO,      \r
+               boxHeight         : XUI_Attr_AUTO,\r
                minBoxHeight      : 0,\r
-               maxBoxHeight      : X.UI.Attr.AUTO,\r
+               maxBoxHeight      : XUI_Attr_AUTO,\r
                contentL          : 0,\r
                contentT          : 0,\r
                contentR          : 0,\r
                contentB          : 0,\r
                boxSizingOffsetLR : 0,\r
                boxSizingOffsetTB : 0,          \r
-               contentWidth      : X.UI.Attr.AUTO,\r
+               contentWidth      : XUI_Attr_AUTO,\r
                minContentWidth   : 0,\r
-               maxContentWidth   : X.UI.Attr.AUTO,\r
+               maxContentWidth   : XUI_Attr_AUTO,\r
                lastContentWidth  : -1,\r
-               contentHeight     : X.UI.Attr.AUTO,\r
+               contentHeight     : XUI_Attr_AUTO,\r
                minContentHeight  : 0,\r
-               maxContentHeight  : X.UI.Attr.AUTO,\r
+               maxContentHeight  : XUI_Attr_AUTO,\r
                lastContentHeight : -1,\r
                \r
                constraintW       : false,\r
                constraintH       : false,\r
                autoWidth         : false,\r
                autoHeight        : false,\r
+               noWidth           : false,\r
+               noHeight          : false,\r
                percentWidth      : false,\r
                percentHeight     : false,\r
                // :hover, :focus, :disabled\r
@@ -69,14 +71,14 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                        //this.xnode      = X_Doc_create( 'div' );\r
                        this.phase      = 1;\r
                        \r
-                       this[ 'dispatch' ]( X.UI.Event.INIT );\r
+                       this[ 'dispatch' ]( XUI_Event.INIT );\r
                },\r
                \r
                addToParent : function( xnodeParent ){\r
                        xnodeParent && xnodeParent[ 'append' ]( this.xnode );\r
                        \r
                        this.phase = 2;\r
-                       this[ 'dispatch' ]( X.UI.Event.ADDED );\r
+                       this[ 'dispatch' ]( XUI_Event.ADDED );\r
                },\r
                \r
                creationComplete : function(){\r
@@ -84,7 +86,7 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                l, i;\r
                        \r
                        this.phase = 3;\r
-                       this.User[ 'dispatch' ]( X.UI.Event.CREATION_COMPLETE );\r
+                       this.User[ 'dispatch' ]( XUI_Event.CREATION_COMPLETE );\r
                        \r
                        // html 要素が親に追加されるまで控えていたイベントの登録\r
                        if( events && ( l = events.length ) ){\r
@@ -101,26 +103,26 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                 * 親要素が変化した場合、unverifiedAttrs を元に attrObject を再設定.\r
                 */\r
                setAttr : function( name, def, v ){\r
-                       var attrs      = X.UI.attrClassProto || this.attrObject,\r
+                       var attrs      = XUI_attrClassProto || this.attrObject,\r
                                propID     = def.No || def[ 5 ],\r
-                               defaultVal = X.UI.attrClassProto ? attrs[ propID ] : this.attrClass.prototype[ propID ], // def[ 0 ],\r
+                               defaultVal = XUI_attrClassProto ? attrs[ propID ] : this.attrClass.prototype[ propID ], // def[ 0 ],\r
                                currentVal = attrs ? attrs[ propID ] : defaultVal,\r
                                dirty      = def[ 1 ],\r
                                user       = def[ 2 ],\r
                                type       = def[ 3 ],\r
                                list       = def[ 4 ],\r
-                               length     = !!( type & X.UI.Attr.Type.LENGTH        ),\r
-                               minusLen   = !!( type & X.UI.Attr.Type.MINUS_LENGTH  ),\r
-                               percent    = !!( type & X.UI.Attr.Type.PERCENT       ),\r
-                               minusPct   = !!( type & X.UI.Attr.Type.MINUS_PERCENT ),\r
-                               numerical  = !!( type & X.UI.Attr.Type.NUMERICAL     ),\r
-                               auto       = !!( type & X.UI.Attr.Type.AUTO          ),\r
-                               color      = !!( type & X.UI.Attr.Type.COLOR         ),\r
-                               url        = !!( type & X.UI.Attr.Type.URL           ),\r
-                               fontName   = !!( type & X.UI.Attr.Type.FONT_NAME     ),\r
-                               flag       = !!( type & X.UI.Attr.Type.BOOLEAN       ),\r
-                               combi      = !!( type & X.UI.Attr.Type.COMBI         ),\r
-                               quartet    = !!( type & X.UI.Attr.Type.QUARTET       ),\r
+                               length     = !!( type & XUI_Attr_Type.LENGTH        ),\r
+                               minusLen   = !!( type & XUI_Attr_Type.MINUS_LENGTH  ),\r
+                               percent    = !!( type & XUI_Attr_Type.PERCENT       ),\r
+                               minusPct   = !!( type & XUI_Attr_Type.MINUS_PERCENT ),\r
+                               numerical  = !!( type & XUI_Attr_Type.NUMERICAL     ),\r
+                               auto       = !!( type & XUI_Attr_Type.AUTO          ),\r
+                               color      = !!( type & XUI_Attr_Type.COLOR         ),\r
+                               url        = !!( type & XUI_Attr_Type.URL           ),\r
+                               fontName   = !!( type & XUI_Attr_Type.FONT_NAME     ),\r
+                               flag       = !!( type & XUI_Attr_Type.BOOLEAN       ),\r
+                               combi      = !!( type & XUI_Attr_Type.COMBI         ),\r
+                               quartet    = !!( type & XUI_Attr_Type.QUARTET       ),\r
                                _v, i, l, nodes, root, roots;\r
                \r
                        if( X_Type_isString( v ) ){\r
@@ -129,7 +131,7 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                        // good\r
                                } else\r
                                if( auto && v === 'auto' ){\r
-                                       v = X.UI.Attr.AUTO;\r
+                                       v = XUI_Attr_AUTO;\r
                                } else\r
                                if( list && ( _v = list[ v ] ) ){\r
                                        // good\r
@@ -164,7 +166,7 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                    ( percent   && 0 <= v && v <= 1 ) ||\r
                                        ( minusPct  && -1 <= v && v < 0 ) ||\r
                                    ( numerical && 0 <= v ) ||\r
-                                   ( auto      && v === X.UI.Attr.AUTO ) ||\r
+                                   ( auto      && v === XUI_Attr_AUTO ) ||\r
                                    ( color     && 0 <= v && v <= 0xFFFFFF ) ||\r
                                    ( list      && list[ v ] )\r
                                ){\r
@@ -179,7 +181,7 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                        } else\r
                        if( X_Type_isArray( v ) ){\r
                                if( v.length <= 4 && quartet ){\r
-                                       type &= ~X.UI.Attr.Type.QUARTET;\r
+                                       type &= ~XUI_Attr_Type.QUARTET;\r
                                        switch( v.length ){\r
                                                case 1 :\r
                                                        this.setAttr( false, [ defaultVal, user, dirty, type, list,   propID ], v[ 0 ] );\r
@@ -208,7 +210,7 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                        };                                      \r
                                } else\r
                                if( v.length === 2 && combi ){\r
-                                       type &= ~X.UI.Attr.Type.COMBI;\r
+                                       type &= ~XUI_Attr_Type.COMBI;\r
                                        this.setAttr( false, [ defaultVal, user, dirty, type, list,   propID ], v[ 0 ] );\r
                                        this.setAttr( false, [ defaultVal, user, dirty, type, list, ++propID ], v[ 1 ] );\r
                                } else {\r
@@ -216,40 +218,40 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                        return;\r
                                };\r
 \r
-                               if( !X.UI.attrClassProto && user === X.UI.Attr.USER.XNODE && this.xnode ){\r
-                                       this.xnode[ 'css' ]( X.UI.Attr.Rename[ name ] || name, XUI_AbstractUINode_createCssText( this, name ) );\r
-                                       //console.log( ( X.UI.Attr.Rename[ name ] || name ) + ' ' + XUI_AbstractUINode_createCssText( this, name ) + ' ' + propID + ' ' + attrs[ propID ] );\r
+                               if( !XUI_attrClassProto && user === XUI_Attr_USER.XNODE && this.xnode ){\r
+                                       this.xnode[ 'css' ]( XUI_Attr_Rename[ name ] || name, XUI_AbstractUINode_createCssText( this, name ) );\r
+                                       //console.log( ( XUI_Attr_Rename[ name ] || name ) + ' ' + XUI_AbstractUINode_createCssText( this, name ) + ' ' + propID + ' ' + attrs[ propID ] );\r
                                };\r
                                return;\r
                        };\r
 \r
                        if( !v && v !== 0 ) v = defaultVal;\r
                        \r
-                       if( X.UI.attrClassProto ){\r
+                       if( XUI_attrClassProto ){\r
                                attrs[ propID ] = v;\r
                                return;                 \r
                        };              \r
 \r
                        if( currentVal !== v ){\r
                                switch( propID ){\r
-                                       case X.UI.Attr.Support.left.No :\r
-                                               this.constraintW = attrs[ X.UI.Attr.Support.right.No ] !== null;\r
+                                       case XUI_Attr_Support.left.No :\r
+                                               this.constraintW = attrs[ XUI_Attr_Support.right.No ] !== null;\r
                                                break;\r
-                                       case X.UI.Attr.Support.right.No :\r
-                                               this.constraintW = attrs[ X.UI.Attr.Support.left.No ] !== null;\r
+                                       case XUI_Attr_Support.right.No :\r
+                                               this.constraintW = attrs[ XUI_Attr_Support.left.No ] !== null;\r
                                                break;\r
-                                       case X.UI.Attr.Support.top.No :\r
-                                               this.constraintH = attrs[ X.UI.Attr.Support.bottom.No ] !== null;\r
+                                       case XUI_Attr_Support.top.No :\r
+                                               this.constraintH = attrs[ XUI_Attr_Support.bottom.No ] !== null;\r
                                                break;\r
-                                       case X.UI.Attr.Support.bottom.No :\r
-                                               this.constraintH = attrs[ X.UI.Attr.Support.top.No ] !== null;\r
+                                       case XUI_Attr_Support.bottom.No :\r
+                                               this.constraintH = attrs[ XUI_Attr_Support.top.No ] !== null;\r
                                                break;\r
-                                       case X.UI.Attr.Support.width.No :\r
-                                               this.autoWidth    = v === X.UI.Attr.AUTO;\r
+                                       case XUI_Attr_Support.width.No :\r
+                                               this.autoWidth    = v === XUI_Attr_AUTO;\r
                                                this.percentWidth = X_Type_isString( v );\r
                                                break;\r
-                                       case X.UI.Attr.Support.height.No :\r
-                                               this.autoHeight    = v === X.UI.Attr.AUTO;\r
+                                       case XUI_Attr_Support.height.No :\r
+                                               this.autoHeight    = v === XUI_Attr_AUTO;\r
                                                this.percentHeight = X_Type_isString( v );\r
                                                break;\r
                                };\r
@@ -261,20 +263,20 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                        attrs[ propID ] = v;\r
                                };\r
                                \r
-                               if( name && user === X.UI.Attr.USER.UINODE ){\r
+                               if( name && user === XUI_Attr_USER.UINODE ){\r
                                        this[ name ] = v;\r
                                };\r
                                \r
-                               if( name && user === X.UI.Attr.USER.XNODE && this.xnode ){\r
-                                       this.xnode[ 'css' ]( X.UI.Attr.Rename[ name ] || name, XUI_AbstractUINode_createCssText( this, name ) );\r
-                                       //console.log( ( X.UI.Attr.Rename[ name ] || name ) + ' ' + XUI_AbstractUINode_createCssText( this, name ) + ' ' + propID + ' ' + attrs[ propID ] );\r
+                               if( name && user === XUI_Attr_USER.XNODE && this.xnode ){\r
+                                       this.xnode[ 'css' ]( XUI_Attr_Rename[ name ] || name, XUI_AbstractUINode_createCssText( this, name ) );\r
+                                       //console.log( ( XUI_Attr_Rename[ name ] || name ) + ' ' + XUI_AbstractUINode_createCssText( this, name ) + ' ' + propID + ' ' + attrs[ propID ] );\r
                                } else\r
                                if( this.dirty < dirty ) this.dirty = dirty;\r
                        };\r
                },\r
 \r
                getAttr : function( name ){\r
-                       var attrs   = this.attrObject || this.attrClass.prototype || X.UI.AttrClass,\r
+                       var attrs   = this.attrObject || this.attrClass.prototype || XUI_AttrClass,\r
                                support = this.supportAttrs[ name ],\r
                 v, type, list;\r
                        if( !support ) return;\r
@@ -286,19 +288,19 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                        \r
                        type = support[ 3 ];\r
                        // Unit\r
-                       if( type & X.UI.Attr.Type.QUARTET ){\r
+                       if( type & XUI_Attr_Type.QUARTET ){\r
                                return [ this.getAttr( name + 'Top' ), this.getAttr( name + 'Right' ), this.getAttr( name + 'Bottom' ), this.getAttr( name + 'Left' ) ];\r
                        };\r
-                       if( type & X.UI.Attr.Type.COMBI   ) return [ v, data[ ++propID ] ];\r
+                       if( type & XUI_Attr_Type.COMBI   ) return [ v, data[ ++propID ] ];\r
                        \r
                        v    = attrs[ support.No ];             \r
-                       if( type & X.UI.Attr.Type.AUTO && v === X.UI.Attr.AUTO ) return 'auto'; \r
+                       if( type & XUI_Attr_Type.AUTO && v === XUI_Attr_AUTO ) return 'auto'; \r
                        \r
                        list = support[ 4 ];\r
                        if( list ) return list[ v ];\r
                        \r
-                       if( type & X.UI.Attr.Type.COLOR && X_Type_isNumber( v ) ) return v;\r
-                       if( !( type & X.UI.Attr.Type.NUMERICAL ) && X_Type_isNumber( v ) ) return v + 'em';\r
+                       if( type & XUI_Attr_Type.COLOR && X_Type_isNumber( v ) ) return v;\r
+                       if( !( type & XUI_Attr_Type.NUMERICAL ) && X_Type_isNumber( v ) ) return v + 'em';\r
                        return v;\r
                },\r
                \r
@@ -332,25 +334,32 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                calculate : function( isNeedsDetection, x, y, allowedW, allowedH ){\r
                        this.preMesure( allowedW, allowedH );\r
                        \r
-                       if( this.boxWidth === X.UI.Attr.AUTO || this.boxHeight === X.UI.Attr.AUTO ){\r
+                       this.noWidth  = this.boxWidth === XUI_Attr_AUTO;\r
+                       this.noHeight = this.boxHeight === XUI_Attr_AUTO;\r
+                       \r
+                       if( this.noWidth || this.noHeight ){\r
                                this.mesure();\r
                                this.postMesure();\r
                        };\r
                        \r
-                       !isNeedsDetection && this.updateLayout( x, y );\r
+                       if( !isNeedsDetection ){\r
+                               this.boxX += x;\r
+                               this.boxY += y;                 \r
+                       };\r
                },\r
                \r
                /**\r
                 * X_Node_BoxModel の情報を引きながら top,left,width,height,padding,border の設定\r
                 */\r
-               updateLayout : function( x, y ){\r
-                       this.boxX = x;\r
-                       this.boxY = y;\r
+               updateLayout : function(){\r
+                       var x = this.boxX,\r
+                               y = this.boxY;\r
+\r
                        this.xnode\r
                                [ 'css' ]( 'left',        x ? x + 'em' : 0 )\r
                                [ 'css' ]( 'top',         y ? y + 'em' : 0 )\r
-                               [ 'css' ]( 'width',       this.contentWidth  ? XUI_AbstractUINode_ceil( this.contentWidth  ) + 'em' : 0 )\r
-                               [ 'css' ]( 'height',      this.contentHeight ? XUI_AbstractUINode_ceil( this.contentHeight ) + 'em' : 0 )\r
+                               [ 'css' ]( 'width',       this.noWidth  ? 'auto' : this.contentWidth  ? this.contentWidth  + 'em' : 0 )\r
+                               [ 'css' ]( 'height',      this.noHeight ? 'auto' : this.contentHeight ? this.contentHeight + 'em' : 0 )\r
                                [ 'css' ]( 'padding',     XUI_AbstractUINode_createCssText( this, 'padding' ) )\r
                                [ 'css' ]( 'borderWidth', XUI_AbstractUINode_createCssText( this, 'borderWidth' ) );\r
                },\r
@@ -359,8 +368,8 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                 * 親の サイズを元に自身のサイズを計算していく\r
                 */\r
                preMesure : function( allowedW, allowedH ){\r
-                       var attrs = this.attrObject || this.attrClass.prototype || X.UI.AttrClass,\r
-                               box   = attrs[ X.UI.Attr.Support.sizing.No ],\r
+                       var attrs = this.attrObject || this.attrClass.prototype || XUI_AttrClass,\r
+                               box   = attrs[ XUI_Attr_Support.sizing.No ],\r
                                min, max,\r
                                boxL, boxT, boxR, boxB,\r
                                contentW, contentH, boxMinus,\r
@@ -371,10 +380,10 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                        // 自身が constraintW の場合 親が AUTO ではない\r
                        // 自身が constraintW でない場合自身が  AUTO はなくかつ親 が AUTO の場合 or 自身は % でない\r
                        \r
-                       paddingR = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.padding.No + 1 ], allowedW );\r
-                       paddingL = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.padding.No + 3 ], allowedW );\r
-                       borderR  = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.borderWidth.No + 1 ], allowedW );\r
-                       borderL  = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.borderWidth.No + 3 ], allowedW );\r
+                       paddingR = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.padding.No + 1 ], allowedW );\r
+                       paddingL = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.padding.No + 3 ], allowedW );\r
+                       borderR  = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.borderWidth.No + 1 ], allowedW );\r
+                       borderL  = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.borderWidth.No + 3 ], allowedW );\r
                        boxMinus = 0;\r
                        switch( box ){\r
                                case 3 : // border-box\r
@@ -386,11 +395,11 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                        this.contentL = borderL + paddingL;\r
                        this.contentR = borderR + paddingR;\r
                        \r
-                       if( this.constraintW ? allowedW !== X.UI.Attr.AUTO : !this.autoWidth && ( allowedW !== X.UI.Attr.AUTO || !this.percentWidth ) ){\r
+                       if( this.constraintW ? allowedW !== XUI_Attr_AUTO : !this.autoWidth && ( allowedW !== XUI_Attr_AUTO || !this.percentWidth ) ){\r
                                if( this.constraintW ){ // 制約レイアウト\r
-                                       contentW = allowedW - ( boxL = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.left.No ], allowedW ) ) - ( boxR = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.right.No ], allowedW ) );\r
+                                       contentW = allowedW - ( boxL = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.left.No ], allowedW ) ) - ( boxR = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.right.No ], allowedW ) );\r
                                } else {\r
-                                       contentW = XUI_AbstractUINode_calcFinalValue( attrs[ X.UI.Attr.Support.width.No ], attrs[ X.UI.Attr.Support.minWidth.No ], attrs[ X.UI.Attr.Support.maxWidth.No ], allowedW );                                  \r
+                                       contentW = XUI_AbstractUINode_calcFinalValue( attrs[ XUI_Attr_Support.width.No ], attrs[ XUI_Attr_Support.minWidth.No ], attrs[ XUI_Attr_Support.maxWidth.No ], allowedW );                                     \r
                                };\r
                                this.contentWidth = contentW + boxMinus;\r
                                //this.scrollWidth  = this.contentWidth + this.contentL + this.contentR;\r
@@ -401,8 +410,8 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                delete this.minBoxWidth;\r
                                delete this.maxBoxWidth;\r
                        } else {        \r
-                               this.minContentWidth = XUI_AbstractUINode_ceil( XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.minWidth.No ], allowedW ) + boxMinus );\r
-                               this.maxContentWidth = XUI_AbstractUINode_ceil( XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.maxWidth.No ], allowedW ) + boxMinus );\r
+                               this.minContentWidth = XUI_AbstractUINode_ceil( XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.minWidth.No ], allowedW ) + boxMinus );\r
+                               this.maxContentWidth = XUI_AbstractUINode_ceil( XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.maxWidth.No ], allowedW ) + boxMinus );\r
                                //this.scrollWidth     = this.contentWidth + this.contentL + this.contentR;\r
                                this.minBoxWidth     = this.minContentWidth - boxMinus + this.contentL + this.contentR;\r
                                this.maxBoxWidth     = this.maxContentWidth - boxMinus + this.contentL + this.contentR;\r
@@ -412,10 +421,10 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                //delete this.boxSizingOffsetLR;\r
                        };\r
                        \r
-                       paddingT  = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.padding.No + 0 ], allowedH );// paddingTRBL の % 指定は 最大幅に対して TB でも幅に対して\r
-                       paddingB  = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.padding.No + 2 ], allowedH );\r
-                       borderT   = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.borderWidth.No  + 0 ], allowedH );\r
-                       borderB   = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.borderWidth.No  + 2 ], allowedH );\r
+                       paddingT  = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.padding.No + 0 ], allowedH );// paddingTRBL の % 指定は 最大幅に対して TB でも幅に対して\r
+                       paddingB  = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.padding.No + 2 ], allowedH );\r
+                       borderT   = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.borderWidth.No  + 0 ], allowedH );\r
+                       borderB   = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.borderWidth.No  + 2 ], allowedH );\r
                        boxMinus = 0;\r
                        switch( box ){\r
                                case 3 : // border-box\r
@@ -428,11 +437,11 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                        this.contentB = borderB + paddingB;\r
                        \r
                        // Height\r
-                       if( this.constraintH ? allowedH !== X.UI.Attr.AUTO : !this.autoHeight && ( allowedH !== X.UI.Attr.AUTO || !this.percentHeight ) ){\r
+                       if( this.constraintH ? allowedH !== XUI_Attr_AUTO : !this.autoHeight && ( allowedH !== XUI_Attr_AUTO || !this.percentHeight ) ){\r
                                if( this.constraintH ){ // 制約レイアウト\r
-                                       contentH = allowedH - ( boxT = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.top.No ], allowedH ) ) - ( boxB = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.bottom.No ], allowedH ) );\r
+                                       contentH = allowedH - ( boxT = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.top.No ], allowedH ) ) - ( boxB = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.bottom.No ], allowedH ) );\r
                                } else {\r
-                                       contentH = XUI_AbstractUINode_calcFinalValue( attrs[ X.UI.Attr.Support.height.No ], attrs[ X.UI.Attr.Support.minHeight.No ], attrs[ X.UI.Attr.Support.maxHeight.No ], allowedH );\r
+                                       contentH = XUI_AbstractUINode_calcFinalValue( attrs[ XUI_Attr_Support.height.No ], attrs[ XUI_Attr_Support.minHeight.No ], attrs[ XUI_Attr_Support.maxHeight.No ], allowedH );\r
                                };                      \r
                                this.contentHeight = contentH + boxMinus;\r
                                //this.scrollHeight  = this.contentHeight + this.contentT + this.contentB;\r
@@ -443,8 +452,8 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                delete this.minBoxHeight;\r
                                delete this.maxBoxHeight;\r
                        } else {\r
-                               this.minContentHeight = XUI_AbstractUINode_ceil( XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.minHeight.No ], allowedH ) + boxMinus );\r
-                               this.maxContentHeight = XUI_AbstractUINode_ceil( XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.maxHeight.No ], allowedH ) + boxMinus );                                \r
+                               this.minContentHeight = XUI_AbstractUINode_ceil( XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.minHeight.No ], allowedH ) + boxMinus );\r
+                               this.maxContentHeight = XUI_AbstractUINode_ceil( XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.maxHeight.No ], allowedH ) + boxMinus );                         \r
                                this.minBoxHeight = this.minContentHeight - boxMinus + this.contentT + this.contentB;\r
                                this.maxBoxHeight = this.maxContentHeight - boxMinus + this.contentT + this.contentB;\r
                \r
@@ -456,12 +465,12 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                        \r
                        if( this.parentData && this.parentData.layout.overrideAttrsForChild.left ){\r
                                if( this.constraintW ){\r
-                                       this.boxX = ( boxL || boxL === 0 ) ? boxL : XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.left.No ], allowedW );\r
+                                       this.boxX = ( boxL || boxL === 0 ) ? boxL : XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.left.No ], allowedW );\r
                                } else\r
-                               if( attrs[ X.UI.Attr.Support.right.No ] === null ){\r
-                                       this.boxX = ( boxL || boxL === 0 ) ? boxL : XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.left.No ], allowedW );\r
+                               if( attrs[ XUI_Attr_Support.right.No ] === null ){\r
+                                       this.boxX = ( boxL || boxL === 0 ) ? boxL : XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.left.No ], allowedW );\r
                                } else {\r
-                                       this.boxX = alllowW - this.boxWidth - ( ( boxR || boxR === 0 ) ? boxR : XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.right.No ], allowedW ) );\r
+                                       this.boxX = alllowW - this.boxWidth - ( ( boxR || boxR === 0 ) ? boxR : XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.right.No ], allowedW ) );\r
                                };\r
                        } else {\r
                                delete this.boxX;\r
@@ -469,12 +478,12 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                        \r
                        if( this.parentData && this.parentData.layout.overrideAttrsForChild.top ){\r
                                if( this.constraintH ){\r
-                                       this.boxY = ( boxT || boxT === 0 ) ? boxT : XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.top.No ], allowedH );\r
+                                       this.boxY = ( boxT || boxT === 0 ) ? boxT : XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.top.No ], allowedH );\r
                                } else\r
-                               if( attrs[ X.UI.Attr.Support.bottom.No ] === null ){\r
-                                       this.boxY = ( boxT || boxT === 0 ) ? boxT : XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.top.No ], allowedH );\r
+                               if( attrs[ XUI_Attr_Support.bottom.No ] === null ){\r
+                                       this.boxY = ( boxT || boxT === 0 ) ? boxT : XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.top.No ], allowedH );\r
                                } else {\r
-                                       this.boxY = allowedH - this.boxHeight - ( ( boxB || boxB === 0 ) ? boxB : XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.bottom.No ], allowedH ) );\r
+                                       this.boxY = allowedH - this.boxHeight - ( ( boxB || boxB === 0 ) ? boxB : XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.bottom.No ], allowedH ) );\r
                                };\r
                        } else {\r
                                delete this.boxY;\r
@@ -482,13 +491,14 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                },\r
                \r
                /**\r
-                * 描画・計測を行って、contentSize, scrollSize の決定\r
+                * 描画・計測を行って、contentSize の決定\r
                 */\r
                mesure : function(){\r
                        var dirty = this.dirty,\r
-                               w, h, xnode;\r
+                               //sup   = X_UA[ 'Gecko' ] || ( X_UA[ 'Safari' ] && X_UA[ 'Windows' ] ) ? .01251 : 0,\r
+                               w, _w, h, xnode;\r
                        \r
-                       if( dirty === X.UI.Dirty.CLEAN ){\r
+                       if( dirty === XUI_Dirty.CLEAN ){\r
                                if( this.percentWidth || this.percentHeight ){\r
                                        \r
                                };\r
@@ -496,12 +506,12 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                        \r
                        switch( dirty ){\r
                                \r
-                               case X.UI.Dirty.CONTENT : // コンテンツが変更された\r
-                               case X.UI.Dirty.FONT    : // フォントサイズが変更された\r
+                               case XUI_Dirty.CONTENT : // コンテンツが変更された\r
+                               case XUI_Dirty.FONT    : // フォントサイズが変更された\r
                                        delete this.lastContentWidth;\r
                                        delete this.lastContentHeight;\r
                                        \r
-                               case X.UI.Dirty.LAYOUT : // レイアウトの再計算が必要\r
+                               case XUI_Dirty.LAYOUT : // レイアウトの再計算が必要\r
                                \r
                                default : // TODO レイアウト崩れに対処 パフォーマンス悪い!\r
                                \r
@@ -528,67 +538,67 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                         *     必要でない\r
                                         */\r
                                        if( xnode[ '_xnodes' ] && xnode[ '_xnodes' ].length ){\r
-                                               if( w === X.UI.Attr.AUTO ){\r
-                                                       w = this.contentWidth = XUI_AbstractUINode_ceil( xnode[ 'css' ]( 'width', 'auto' )[ 'width' ]() / X_Node_CSS_getCharSize( xnode ) );\r
-                                                       console.log( 'chr ' + X_Node_CSS_getCharSize( xnode ) );\r
-                                                       \r
-                                                       //this.scrollWidth = w + this.contentL + this.contentR;\r
-                                                       if( this.maxContentWidth < w - this.boxSizingOffsetLR ) this.contentWidth = this.maxContentWidth + this.boxSizingOffsetLR;\r
-                                                       if( w - this.boxSizingOffsetLR < this.minContentWidth ) this.contentWidth = this.minContentWidth + this.boxSizingOffsetLR;\r
-                                                       this.lastContentWidth = this.contentWidth;\r
+                                               if( w === XUI_Attr_AUTO ){\r
                                                        \r
-                                                       w !== this.contentWidth && xnode[ 'css' ]( 'width', this.contentWidth + 'em' );\r
-                                                       \r
-                                                       if( h === X.UI.Attr.AUTO ){\r
-                                                               this.contentHeight = h = XUI_AbstractUINode_ceil( xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode ) ); // scrollHeight() ??\r
-                                                               //this.scrollHeight  = h + this.contentT + this.contentB;\r
-                                                               if( this.maxContentHeight < h - this.boxSizingOffsetTB ) this.contentHeight = this.maxContentHeight + this.boxSizingOffsetTB;\r
-                                                               if( h - this.boxSizingOffsetTB < this.minContentHeight ) this.contentHeight = this.minContentHeight + this.boxSizingOffsetTB;\r
-                                                       } else {\r
-                                                               //this.scrollHeight = h + this.contentT + this.contentB;\r
+                                                       w = _w = XUI_AbstractUINode_ceil( xnode[ 'css' ]( 'width', 'auto' )[ 'clientWidth' ]() / X_Node_CSS_getCharSize( xnode ) );\r
+\r
+                                                       if( this.maxContentWidth < w - this.boxSizingOffsetLR ){\r
+                                                               this.noWidth = false;\r
+                                                               w = this.maxContentWidth + this.boxSizingOffsetLR;\r
                                                        };\r
-                                                       \r
-                                                       this.lastContentHeight = h;\r
+                                                       if( w - this.boxSizingOffsetLR < this.minContentWidth ){\r
+                                                               this.noWidth = false;\r
+                                                               w = this.minContentWidth + this.boxSizingOffsetLR;\r
+                                                       };\r
+\r
+                                                       if( h === XUI_Attr_AUTO ){\r
+                                                               w !== _w && xnode[ 'css' ]( 'width', w + 'em' );\r
+                                                               h = XUI_AbstractUINode_ceil( xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode ) );\r
+                                                               w !== _w && xnode[ 'css' ]( 'width', 'auto' );\r
+                                                       };\r
+\r
+                                                       this.lastContentWidth = this.contentWidth = w;\r
+\r
                                                } else\r
-                                               if( h === X.UI.Attr.AUTO ){\r
-                                                       console.log( 'chr ' + X_Node_CSS_getCharSize( xnode ) );\r
+                                               if( h === XUI_Attr_AUTO ){\r
                                                        if( w !== this.lastContentWidth ){\r
-                                                               xnode[ 'css' ]( 'width', w + 'em' );\r
+                                                               xnode[ 'css' ]( 'width', w + 'em' );                                                            \r
+                                                               this.lastContentWidth = w;\r
                                                                \r
-                                                               this.lastContentWidth  = w;\r
-                                                               this.contentHeight = h = XUI_AbstractUINode_ceil( xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode ) ); // ie8 clientHeight, ff scrollHeight & clientHeight\r
-                                                               //this.scrollWidth       = w + this.contentL + this.contentR;\r
-                                                               //this.scrollHeight      = h + this.contentT + this.contentB;\r
-                                                               if( this.maxContentHeight < h - this.boxSizingOffsetTB ) this.contentHeight = this.maxContentHeight + this.boxSizingOffsetTB;\r
-                                                               if( h - this.boxSizingOffsetTB < this.minContentHeight ) this.contentHeight = this.minContentHeight + this.boxSizingOffsetTB;                                                           \r
+                                                               // ie8 clientHeight, ff scrollHeight & clientHeight\r
+                                                               h = XUI_AbstractUINode_ceil( xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode ) );\r
                                                        } else {\r
-                                                               this.contentHeight = this.lastContentHeight = h =\r
-                                                                       this.lastContentHeight === -1 ? XUI_AbstractUINode_ceil( xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode ) ) : this.lastContentHeight;\r
-                                                               //this.scrollWidth   = w + this.contentL + this.contentR;\r
-                                                               //this.scrollHeight  = h + this.contentT + this.contentB;\r
+                                                               h = this.lastContentHeight === -1 ?\r
+                                                                               XUI_AbstractUINode_ceil( xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode ) ) :\r
+                                                                               this.lastContentHeight;\r
                                                        };\r
                                                } else\r
-                                               if( dirty !== X.UI.Dirty.LAYOUT ){\r
-                                                       console.log( 'chr ' + X_Node_CSS_getCharSize( xnode ) );\r
+                                               if( dirty !== XUI_Dirty.LAYOUT ){\r
                                                        this.contentWidth  = this.lastContentWidth  = w;\r
-                                                       this.contentHeight = this.lastContentHeight = XUI_AbstractUINode_ceil( xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode ) );\r
-                                                       //this.scrollWidth   = this.contentWidth  + this.contentL + this.contentR;\r
-                                                       //this.scrollHeight  = this.contentHeight + this.contentT + this.contentB;\r
-                                               } else {\r
-                                                       //this.scrollWidth  = w + this.contentL + this.contentR;\r
-                                                       //this.scrollHeight = h + this.contentT + this.contentB;\r
-                                               };              \r
+                                                       h = XUI_AbstractUINode_ceil( xnode[ 'css' ]( 'height', 'auto' )[ 'scrollHeight' ]() / X_Node_CSS_getCharSize( xnode ) );\r
+                                               };\r
+                                               \r
+                                               if( this.maxContentHeight < h - this.boxSizingOffsetTB ){\r
+                                                       this.noHeight = false;\r
+                                                       h = this.maxContentHeight + this.boxSizingOffsetTB;\r
+                                               };\r
+                                               if( h - this.boxSizingOffsetTB < this.minContentHeight ){\r
+                                                       this.noHeight = false;\r
+                                                       h = this.minContentHeight + this.boxSizingOffsetTB;\r
+                                               };\r
+                                               \r
+                                               this.contentHeight = this.lastContentHeight = h;\r
+                                               \r
                                        } else {\r
                                                // コンテンツを持たないため基本のサイズは0\r
-                                               if( w === X.UI.Attr.AUTO ) this.contentWidth  = w = 0 < this.minContentWidth  ? this.minContentWidth  : 0;\r
-                                               if( h === X.UI.Attr.AUTO ) this.contentHeight = h = 0 < this.minContentHeight ? this.minContentHeight : 0;\r
-                                               //this.scrollWidth  = w + this.contentL + this.contentR;\r
-                                               //this.scrollHeight = h + this.contentT + this.contentB;\r
+                                               if( w === XUI_Attr_AUTO ) this.contentWidth  = w = 0 < this.minContentWidth  ? this.minContentWidth  : 0;\r
+                                               if( h === XUI_Attr_AUTO ) this.contentHeight = h = 0 < this.minContentHeight ? this.minContentHeight : 0;\r
+                                               this.noWidth = this.noHeight = false;\r
                                        };\r
                                        \r
                                        delete this.dirty;\r
                                        break;                  \r
-                               //case X.UI.Dirty.PAINT : // 再描画のみ必要\r
+                               //case XUI_Dirty.PAINT : // 再描画のみ必要\r
                                //      break;\r
                        };\r
                },\r
@@ -596,8 +606,8 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                 * 自身の contentWidth, contentHeight を元に AUTO な width, height を確定していく\r
                 */\r
                postMesure : function(){\r
-                       var     attrs = this.attrObject || this.attrClass.prototype || X.UI.AttrClass,\r
-                               box   = attrs[ X.UI.Attr.Support.sizing.No ],\r
+                       var     attrs = this.attrObject || this.attrClass.prototype || XUI_AttrClass,\r
+                               box   = attrs[ XUI_Attr_Support.sizing.No ],\r
                                contentW, contentH,\r
                                contentPlus,\r
                                paddingT, paddingR, paddingB, paddingL,\r
@@ -605,12 +615,12 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                min, max;\r
                                \r
                        // Width\r
-                       if( this.boxWidth === X.UI.Attr.AUTO ){\r
+                       if( this.boxWidth === XUI_Attr_AUTO ){\r
                                contentW = this.contentWidth;\r
-                               paddingR = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.padding.No + 1 ], contentW );                                 \r
-                               paddingL = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.padding.No + 3 ], contentW );                                 \r
-                               borderR  = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.borderWidth.No + 1 ], contentW );\r
-                               borderL  = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.borderWidth.No + 3 ], contentW );\r
+                               paddingR = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.padding.No + 1 ], contentW );                                  \r
+                               paddingL = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.padding.No + 3 ], contentW );                                  \r
+                               borderR  = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.borderWidth.No + 1 ], contentW );\r
+                               borderL  = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.borderWidth.No + 3 ], contentW );\r
                                contentPlus = 0;\r
                                switch( box ){\r
                                        case 3 : // border-box\r
@@ -622,8 +632,8 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                \r
                                if( !this.constraintW ){\r
                                        contentW += contentPlus;\r
-                                       min = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.minWidth.No ], contentW );\r
-                                       max = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.maxWidth.No ], contentW );\r
+                                       min = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.minWidth.No ], contentW );\r
+                                       max = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.maxWidth.No ], contentW );\r
                                        if( contentW < min && contentPlus < min ){\r
                                                this.contentWidth = min - contentPlus;\r
                                        } else\r
@@ -636,12 +646,12 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                this.boxWidth = this.contentWidth + this.contentL + this.contentR;\r
                        };\r
                        // Height\r
-                       if( this.boxHeight === X.UI.Attr.AUTO ){\r
+                       if( this.boxHeight === XUI_Attr_AUTO ){\r
                                contentH    = this.contentHeight;\r
-                               paddingT    = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.padding.No + 0 ], contentH );// paddingTRBL の % 指定は 最大幅に対して TB でも幅に対して\r
-                               paddingB    = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.padding.No + 2 ], contentH );\r
-                               borderT     = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.borderWidth.No  + 0 ], contentH );\r
-                               borderB     = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.borderWidth.No  + 2 ], contentH );\r
+                               paddingT    = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.padding.No + 0 ], contentH );// paddingTRBL の % 指定は 最大幅に対して TB でも幅に対して\r
+                               paddingB    = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.padding.No + 2 ], contentH );\r
+                               borderT     = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.borderWidth.No  + 0 ], contentH );\r
+                               borderB     = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.borderWidth.No  + 2 ], contentH );\r
                                contentPlus = 0;\r
                                switch( box ){\r
                                        case 3 : // border-box\r
@@ -652,8 +662,8 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                };\r
                                if( !this.constraintH ){\r
                                        contentH += contentPlus;\r
-                                       min = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.minHeight.No ], contentH );\r
-                                       max = XUI_AbstractUINode_calcValue( attrs[ X.UI.Attr.Support.maxHeight.No ], contentH );\r
+                                       min = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.minHeight.No ], contentH );\r
+                                       max = XUI_AbstractUINode_calcValue( attrs[ XUI_Attr_Support.maxHeight.No ], contentH );\r
                                        if( contentH < min && contentPlus < min ){\r
                                                this.contentHeight = min - contentPlus;\r
                                        } else\r
@@ -685,15 +695,15 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                 */\r
                listen : function( type, arg1, arg2, arg3 ){\r
                        var root, events, counter, f;\r
-                       if( X.UI.Event._START_POINTER <= type && type <= X.UI.Event._END_POINTER ){\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
-                               if( X.UI.Event._START_XUI_EVENT < type && type < X.UI.Event._END_XUI_EVENT ){\r
+                               if( XUI_Event._START_XUI_EVENT < type && type < XUI_Event._END_XUI_EVENT ){\r
                                        if( !this.gesture ){\r
-                                               this.gesture = new X.UI.Gesture( this.rootData, this, type );\r
+                                               this.gesture = new Hammer( this.rootData, this, type );\r
                                        } else {\r
                                                this.gesture[ 'listen' ]( type );\r
                                        };\r
@@ -705,7 +715,7 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                                ++counter[ type ];\r
                                        } else {\r
                                                counter[ type ] = 1;                            \r
-                                               root.xnodeInteractiveLayer[ 'listen' ]( X.UI.Event.IdToName[ type ], X_UI_eventRellay );\r
+                                               root.xnodeInteractiveLayer[ 'listen' ]( XUI_Event.IdToName[ type ], X_UI_eventRellay );\r
                                        };\r
                                };\r
                        };\r
@@ -720,7 +730,7 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                },\r
                unlisten : function( type, arg1, arg2, arg3 ){\r
                        var root, events, i, ev, counter, f;\r
-                       if( X.UI.Event._START_POINTER <= type && type <= X.UI.Event._END_POINTER ){\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
@@ -733,7 +743,7 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                        return this;\r
                                };\r
 \r
-                               if( X.UI.Event._START_XUI_EVENT < type && type < X.UI.Event._END_XUI_EVENT ){\r
+                               if( XUI_Event._START_XUI_EVENT < type && type < XUI_Event._END_XUI_EVENT ){\r
                                        this.gesture && this.gesture[ 'unlisten' ]( type );\r
                                } else {\r
                                        root    = this.rootData;\r
@@ -741,7 +751,7 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                        if( !counter[ type ] ) return this;\r
                                        --counter[ type ];\r
                                        if( counter[ type ] === 0 ){\r
-                                               root.xnodeInteractiveLayer[ 'unlisten' ]( X.UI.Event.IdToName[ type ], X_UI_eventRellay );\r
+                                               root.xnodeInteractiveLayer[ 'unlisten' ]( XUI_Event.IdToName[ type ], X_UI_eventRellay );\r
                                                delete counter[ type ];\r
                                        };\r
                                };\r
@@ -758,12 +768,12 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
                \r
                dispatch : function( e ){\r
                        //console.log( e.type + ' ' + ( this[ '_listeners' ] && this[ '_listeners' ][ e.type ] ) );\r
-                       var xve  = X.UI.Event,\r
+                       var xve  = XUI_Event,\r
                                ret  = X_EventDispatcher_dispatch.call( this, e ),\r
                                type = e.type || e;\r
                        \r
                        // TODO captureEvent PointerEvent\r
-                       if( ret & X_Callback_MONOPOLY && !this.hitChildData && ( xve._POINTER_MOVE === type || xve._MOUSE_MOVE === type || xve.FILE_DRAG === type ) ){\r
+                       if( ret & X_Callback_CAPTURE_POINTER && !this.hitChildData && XUI_Event._POINTER_MOVE === type ){\r
                                this.rootData.monopolyNodeData = this;\r
                                return ret;\r
                        };\r
@@ -776,15 +786,15 @@ X.UI._AbstractUINode = X_EventDispatcher[ 'inherits' ](
 );\r
 \r
 function XUI_AbstractUINode_createCssText( that, name ){\r
-       var attrs      = that.attrObject || that.attrClass.prototype || X.UI.AttrClass,\r
+       var attrs      = that.attrObject || that.attrClass.prototype || XUI_AttrClass,\r
                def        = that.supportAttrs[ name ],\r
                no         = def.No,\r
                v          = attrs[ def.No ],\r
                type       = def[ 3 ],\r
                list       = def[ 4 ],\r
-               flag       = !!( type & X.UI.Attr.Type.BOOLEAN ),\r
-               combi      = !!( type & X.UI.Attr.Type.COMBI   ),\r
-               quartet    = !!( type & X.UI.Attr.Type.QUARTET );\r
+               flag       = !!( type & XUI_Attr_Type.BOOLEAN ),\r
+               combi      = !!( type & XUI_Attr_Type.COMBI   ),\r
+               quartet    = !!( type & XUI_Attr_Type.QUARTET );\r
 \r
        if( quartet ){\r
                if( attrs[ no + 1 ] === attrs[ no + 3 ] ){\r
@@ -823,18 +833,18 @@ function XUI_AbstractUINode_createCssText( that, name ){
 };\r
 \r
 function XUI_AbstractUINode_createCssValue( v, type, list ){\r
-       var length     = !!( type & X.UI.Attr.Type.LENGTH        ),\r
-               minusLen   = !!( type & X.UI.Attr.Type.MINUS_LENGTH  ),\r
-               percent    = !!( type & X.UI.Attr.Type.PERCENT       ),\r
-               minusPct   = !!( type & X.UI.Attr.Type.MINUS_PERCENT ),\r
-               numerical  = !!( type & X.UI.Attr.Type.NUMERICAL     ),\r
-               auto       = !!( type & X.UI.Attr.Type.AUTO          ),\r
-               color      = !!( type & X.UI.Attr.Type.COLOR         ),\r
-               url        = !!( type & X.UI.Attr.Type.URL           ),\r
-               fontName   = !!( type & X.UI.Attr.Type.FONT_NAME     );\r
+       var length     = !!( type & XUI_Attr_Type.LENGTH        ),\r
+               minusLen   = !!( type & XUI_Attr_Type.MINUS_LENGTH  ),\r
+               percent    = !!( type & XUI_Attr_Type.PERCENT       ),\r
+               minusPct   = !!( type & XUI_Attr_Type.MINUS_PERCENT ),\r
+               numerical  = !!( type & XUI_Attr_Type.NUMERICAL     ),\r
+               auto       = !!( type & XUI_Attr_Type.AUTO          ),\r
+               color      = !!( type & XUI_Attr_Type.COLOR         ),\r
+               url        = !!( type & XUI_Attr_Type.URL           ),\r
+               fontName   = !!( type & XUI_Attr_Type.FONT_NAME     );\r
        \r
        if( X_Type_isNumber( v ) ){\r
-               if( auto && v === X.UI.Attr.AUTO ) return 'auto';\r
+               if( auto && v === XUI_Attr_AUTO ) return 'auto';\r
                if( length || minusLen ) return v + 'em';\r
                if( numerical ) return v;\r
                if( list && list[ v ] ) return list[ v ];\r
@@ -877,7 +887,7 @@ function XUI_AbstractUINode_ceil( v ){
 \r
 X.UI.AbstractUINode = X_Class_create(\r
        'AbstractUINode',\r
-       X_Class.ABSTRACT | X_Class.SUPER_ACCESS,\r
+       X_Class.ABSTRACT,\r
        {\r
                parent : function(){\r
                        return X_Class_getPrivate( this ).parent;\r
@@ -918,7 +928,7 @@ X.UI.AbstractUINode = X_Class_create(
                                        };\r
                                };\r
                                // getter\r
-                               if( attrs = ( p.attrObject || p.attrClass.prototype || X.UI.AttrClass ) ){\r
+                               if( attrs = ( p.attrObject || p.attrClass.prototype || XUI_AttrClass ) ){\r
                                        def = p.supportAttrs[ nameOrObject ];\r
                                        return def && attrs[ def.No ];\r
                                };\r
index dfe2e15..0a3ad33 100644 (file)
@@ -1,15 +1,15 @@
 \r
-X.UI.Layout.Canvas = X.UI.Layout.create( {\r
+var XUI_Layout_Canvas = X[ 'UI' ][ 'Layout' ][ 'Canvas' ] = XUI_createLayout( {\r
        name : 'CanvasLayout',\r
        \r
        overrideAttrsForSelf : {\r
                selectable  : false,\r
-               role        : [ 0, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.LIST, 'none,chrome,container' ],\r
+               role        : [ 0, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.LIST, 'none,chrome,container' ],\r
                \r
-               width       : [ '100%',         X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],\r
-               maxWidth    : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],\r
-               height      : [ 0,              X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],\r
-               maxHeight   : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ]\r
+               width       : [ '100%',         XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],\r
+               maxWidth    : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],\r
+               height      : [ 0,              XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],\r
+               maxHeight   : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ]\r
        },\r
        \r
        overrideAttrsForChild : {\r
@@ -24,7 +24,7 @@ X.UI.Layout.Canvas = X.UI.Layout.create( {
 \r
                data.preMesure( w, h );\r
                \r
-               if( isNeedsDetection && ( data.boxWidth === X.UI.Attr.AUTO || data.boxHeight === X.UI.Attr.AUTO ) ) return false;\r
+               if( isNeedsDetection && ( data.boxWidth === XUI_Attr_AUTO || data.boxHeight === XUI_Attr_AUTO ) ) return false;\r
                \r
                _x = data.contentL;\r
                _y = data.contentT;\r
@@ -37,23 +37,26 @@ X.UI.Layout.Canvas = X.UI.Layout.create( {
                                node.calculate( false, _x, _y, _w, _h );\r
                        };\r
                } else\r
-               if( data.contentHeight === X.UI.Attr.AUTO ){\r
-                       data.contentHeight = data.minContentHeight !== X.UI.Attr.AUTO ? data.minContentHeight : 0;\r
+               if( data.contentHeight === XUI_Attr_AUTO ){\r
+                       data.contentHeight = data.minContentHeight !== XUI_Attr_AUTO ? data.minContentHeight : 0;\r
                };\r
                \r
                data.postMesure();\r
-               data.updateLayout( x + data.boxX, y + data.boxY );\r
-               \r
+\r
+               if( !isNeedsDetection ){\r
+                       data.boxX += x;\r
+                       data.boxY += y;                 \r
+               };\r
                return true;\r
        }\r
 });\r
 \r
 \r
-X.UI._Box = X.UI._AbstractUINode.inherits(\r
+var XUI_Box = XUI_AbstractUINode.inherits(\r
        'X.UI._Box',\r
-       X_Class.PRIVATE_DATA | X_Class.SUPER_ACCESS, // 現状 super 指定がないとconstructor未定擬時に親のconstructor が使われない\r
+       X_Class.PRIVATE_DATA, // 現状 super 指定がないとconstructor未定擬時に親のconstructor が使われない\r
        {\r
-               supportAttrs    : XUI_Attr_createAttrDef( X.UI._AbstractUINode.prototype.supportAttrs, X.UI.Layout.Canvas.overrideAttrsForSelf ),\r
+               supportAttrs    : XUI_Attr_createAttrDef( XUI_AbstractUINode.prototype.supportAttrs, XUI_Layout_Canvas.overrideAttrsForSelf ),\r
                \r
                layout          : null,\r
                uinodes         : null,\r
@@ -63,8 +66,8 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                pointerChildren : true,\r
                through         : false,\r
 \r
-               scrollingX      : 0,\r
-               scrollingY      : 0,\r
+               scrollingX      : 0, // TODO 現在のスクロール位置\r
+               scrollingY      : 0, // TODO \r
 \r
                Constructor : function( layout, args ){\r
                        var i = 0,\r
@@ -97,7 +100,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                                if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( Node ) ){\r
                                        //this.layout = arg;\r
                                } else\r
-                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( X.UI.Layout.Base ) ){\r
+                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( XUI_LayoutBase ) ){\r
                                        //this.layout = arg;\r
                                } else\r
                                if( X_Type_isObject( arg ) ){\r
@@ -133,7 +136,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                        };\r
                        \r
                        this.phase = 1;\r
-                       this.User[ 'dispatch' ]( { type : X.UI.Event.INIT } );\r
+                       this.User[ 'dispatch' ]( { type : XUI_Event.INIT } );\r
                },\r
                \r
                addToParent : function( parentXNode ){\r
@@ -150,7 +153,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                        };\r
                        \r
                        this.phase = 2;\r
-                       this.User[ 'dispatch' ]( { type : X.UI.Event.ADDED } );\r
+                       this.User[ 'dispatch' ]( { type : XUI_Event.ADDED } );\r
                },\r
                \r
        /* Rellay */\r
@@ -163,7 +166,7 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                                };                              \r
                        };\r
                        \r
-                       X.UI._AbstractUINode.prototype.creationComplete.apply( this, arguments );\r
+                       XUI_AbstractUINode.prototype.creationComplete.apply( this, arguments );\r
                },\r
                \r
                calculate : function( isNeedsDetection, x, y, w, h ){\r
@@ -171,6 +174,17 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
                        this.phase = 4;\r
                        return ret;\r
                },\r
+       \r
+               updateLayout : function(){\r
+                       var uinodes = this.uinodes, i, l;\r
+\r
+                       if( uinodes && ( l = uinodes.length ) ){\r
+                               for( i = 0; i < l; ++i ){\r
+                                       uinodes[ i ].updateLayout();\r
+                               };      \r
+                       };\r
+                       XUI_AbstractUINode.prototype.updateLayout.call( this );\r
+               },\r
                \r
                capcher : function( x, y ){\r
                        var uinodes, child, _x, _y, hit, i;\r
@@ -287,11 +301,11 @@ X.UI._Box = X.UI._AbstractUINode.inherits(
 \r
 X.UI.Box = X.UI.AbstractUINode.inherits(\r
        'Box',\r
-       X_Class.SUPER_ACCESS,\r
-       X.UI._Box,\r
+       X_Class.NONE,\r
+       XUI_Box,\r
        {\r
                Constructor : function(){\r
-                       X_Class_newPrivate( this, X.UI.Layout.Canvas, arguments );\r
+                       X_Class_newPrivate( this, XUI_Layout_Canvas, arguments );\r
                },\r
                \r
                add : function( node /* , node, node ... */ ){\r
@@ -357,7 +371,7 @@ X.UI.Box.presets = function(){
                arg = args[ i ];\r
                if( !arg ) continue;\r
                // レイアウトの preset ができるのは layout が未定義な Box だけ\r
-               if( !shadow.prototype.layout && arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( X.UI.Layout.Base ) ){\r
+               if( !shadow.prototype.layout && arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( XUI_LayoutBase ) ){\r
                        layout = arg;\r
                } else\r
                if( ( klassDef = X_Class_getClassDef( arg ) ) && klassDef.isPrivate ){\r
@@ -381,7 +395,7 @@ X.UI.Box.presets = function(){
                \r
                klass = this.inherits( privateKlass );\r
                privateKlass.prototype.supportAttrs = supports,\r
-               privateKlass.prototype.attrClass    = X.UI.Attr.preset( privateKlass.prototype.attrClass, supports, attrs );\r
+               privateKlass.prototype.attrClass    = XUI_Attr_preset( privateKlass.prototype.attrClass, supports, attrs );\r
        } else {\r
                supports = XUI_Attr_createAttrDef( shadow.prototype.supportAttrs, layout.overrideAttrsForSelf );\r
                \r
@@ -391,7 +405,7 @@ X.UI.Box.presets = function(){
                                {\r
                                        layout       : layout,\r
                                        supportAttrs : supports,\r
-                                       attrClass    : X.UI.Attr.preset( shadow.prototype.attrClass, supports, attrs )\r
+                                       attrClass    : XUI_Attr_preset( shadow.prototype.attrClass, supports, attrs )\r
                                }\r
                        )\r
                );              \r
index 00b706a..d9becca 100644 (file)
@@ -1,15 +1,15 @@
-X.UI.Layout.Vertical = X.UI.Layout.create( {\r
+var XUI_Layout_Vertical = X[ 'UI' ][ 'Layout' ][ 'Vertical' ] = XUI_createLayout( {\r
        \r
        name : 'VerticalLayout',\r
        \r
        overrideAttrsForSelf : {\r
                selectable  : false,\r
-               role        : [ 0,              X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.LIST, 'none,chrome,container' ],\r
-               width       : [ '100%',         X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-               height      : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-               childWidth  : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-               childHeight : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-               gapY        : [ 0,              X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH ]\r
+               role        : [ 0,              XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.LIST, 'none,chrome,container' ],\r
+               width       : [ '100%',         XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+               height      : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+               childWidth  : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+               childHeight : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+               gapY        : [ 0,              XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH ]\r
        },\r
        \r
        overrideAttrsForChild : {\r
@@ -33,8 +33,8 @@ X.UI.Layout.Vertical = X.UI.Layout.create( {
                \r
                contentW       = data.contentWidth;\r
                contentH       = data.contentHeight;\r
-               autoW          = contentW === X.UI.Attr.AUTO;\r
-               autoH          = contentH === X.UI.Attr.AUTO;\r
+               autoW          = contentW === XUI_Attr_AUTO;\r
+               autoH          = contentH === XUI_Attr_AUTO;\r
                detectionPhase = autoW || autoH;\r
                gapY           = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.gapY.No ], contentH );\r
                childW         = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.childWidth.No ], contentW );\r
@@ -52,10 +52,10 @@ X.UI.Layout.Vertical = X.UI.Layout.create( {
                                _y += node.boxHeight + gapY;\r
                                // 概算のみ\r
                                if( autoW ){\r
-                                       if( node.boxWidth !== X.UI.Attr.AUTO ){\r
+                                       if( node.boxWidth !== XUI_Attr_AUTO ){\r
                                                w = node.boxWidth;\r
                                        } else\r
-                                       if( node.minBoxWidth !== X.UI.Attr.AUTO ){\r
+                                       if( node.minBoxWidth !== XUI_Attr_AUTO ){\r
                                                w = node.minBoxWidth;\r
                                                minFlag = true;\r
                                        } else {\r
@@ -66,7 +66,7 @@ X.UI.Layout.Vertical = X.UI.Layout.create( {
                        };\r
                        _y -= gapY;\r
                } else {\r
-                       _y = data.minContentHeight !== X.UI.Attr.AUTO ? data.minContentHeight : 0;\r
+                       _y = data.minContentHeight !== XUI_Attr_AUTO ? data.minContentHeight : 0;\r
                };\r
 \r
                if( detectionPhase ){\r
@@ -81,14 +81,16 @@ X.UI.Layout.Vertical = X.UI.Layout.create( {
                        data.postMesure();\r
                };\r
                \r
-               !isNeedsDetection && data.updateLayout( x + data.boxX, y + data.boxY );\r
-               \r
+               if( !isNeedsDetection ){\r
+                       data.boxX += x;\r
+                       data.boxY += y;                 \r
+               };\r
                return !ret;\r
        }\r
 });\r
 \r
 X.UI.VBox = X.UI.Box.presets(\r
-       X.UI.Layout.Vertical,\r
+       XUI_Layout_Vertical,\r
        'VBox',\r
        {\r
                gapY       : '0.2em',\r
index 52b9bdf..1e74391 100644 (file)
@@ -1,14 +1,14 @@
-X.UI.Layout.Horizontal = X.UI.Layout.create( { \r
+var XUI_Layout_Horizontal = X[ 'UI' ][ 'Layout' ][ 'Horizontal' ] = XUI_createLayout( {        \r
        name : 'HorizontalLayout',\r
        \r
        overrideAttrsForSelf : {\r
                selectable  : false,\r
-               role        : [ 0,              X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.LIST, 'none,chrome,container' ],\r
-               width       : [ '100%',         X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-               height      : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-               childWidth  : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-               childHeight : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ],\r
-               gapX        : [ 0,              X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH ]\r
+               role        : [ 0,              XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.LIST, 'none,chrome,container' ],\r
+               width       : [ '100%',         XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+               height      : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+               childWidth  : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+               childHeight : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ],\r
+               gapX        : [ 0,              XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH ]\r
        },\r
        \r
        overrideAttrsForChild : {\r
@@ -31,8 +31,8 @@ X.UI.Layout.Horizontal = X.UI.Layout.create( {
                \r
                contentW       = data.contentWidth;\r
                contentH       = data.contentHeight;\r
-               autoW          = contentW === X.UI.Attr.AUTO;\r
-               autoH          = contentH === X.UI.Attr.AUTO;\r
+               autoW          = contentW === XUI_Attr_AUTO;\r
+               autoH          = contentH === XUI_Attr_AUTO;\r
                detectionPhase = autoW || autoH;\r
                gapX           = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.gapX.No ], contentW );\r
                childW         = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.childWidth.No ], contentW );\r
@@ -49,10 +49,10 @@ X.UI.Layout.Horizontal = X.UI.Layout.create( {
                                node.calculate( detectionPhase, _x, _y, childW, childH );\r
                                _x += node.boxWidth + gapX;\r
                                if( autoH ){\r
-                                       if( node.boxHeight !== X.UI.Attr.AUTO ){\r
+                                       if( node.boxHeight !== XUI_Attr_AUTO ){\r
                                                h = node.boxHeight;\r
                                        } else\r
-                                       if( node.minBoxHeight !== X.UI.Attr.AUTO ){\r
+                                       if( node.minBoxHeight !== XUI_Attr_AUTO ){\r
                                                h = node.minBoxHeight;\r
                                                minFlag = true;\r
                                        } else {\r
@@ -63,7 +63,7 @@ X.UI.Layout.Horizontal = X.UI.Layout.create( {
                        };\r
                        _x -= gapX;\r
                } else {\r
-                       _h = data.minContentHeight !== X.UI.Attr.AUTO ? data.minContentHeight : 0;\r
+                       _h = data.minContentHeight !== XUI_Attr_AUTO ? data.minContentHeight : 0;\r
                };\r
 \r
                if( detectionPhase ){\r
@@ -78,14 +78,16 @@ X.UI.Layout.Horizontal = X.UI.Layout.create( {
                        data.postMesure();\r
                };\r
                \r
-               !isNeedsDetection && data.updateLayout( x + data.boxX, y + data.boxY );\r
-               \r
+               if( !isNeedsDetection ){\r
+                       data.boxX += x;\r
+                       data.boxY += y;                 \r
+               };\r
                return !ret;\r
        }\r
 });\r
 \r
 X.UI.HBox = X.UI.Box.presets(\r
-       X.UI.Layout.Horizontal,\r
+       XUI_Layout_Horizontal,\r
        'HBox',\r
        {\r
                gapX : '0.2em'\r
index 3856e9c..f0efbaa 100644 (file)
@@ -1,15 +1,15 @@
-X.UI.Layout.Tile = X.UI.Layout.create( {       \r
+var XUI_Layout_Tile = X[ 'UI' ][ 'Layout' ][ 'Tile' ] = XUI_createLayout( {    \r
        name : 'TileLayout',\r
        \r
        overrideAttrsForSelf : {\r
                selectable  : false,\r
-               role        : [ 0,     X.UI.Dirty.CLEAN,  X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.LIST, 'none,chrome,container' ],\r
-               childWidth  : [ '8em', X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],\r
-               childHeight : [ '8em', X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],\r
-               gapX        : [ 0,     X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH ],\r
-               gapY        : [ 0,     X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH ],\r
-               hCenter     : [ true,  X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.BOOLEAN ],\r
-               vCenter     : [ true,  X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.BOOLEAN ]\r
+               role        : [ 0,     XUI_Dirty.CLEAN,  XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.LIST, 'none,chrome,container' ],\r
+               childWidth  : [ '8em', XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],\r
+               childHeight : [ '8em', XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ],\r
+               gapX        : [ 0,     XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH ],\r
+               gapY        : [ 0,     XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH ],\r
+               hCenter     : [ true,  XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.BOOLEAN ],\r
+               vCenter     : [ true,  XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.BOOLEAN ]\r
        },\r
        \r
        overrideAttrsForChild : {\r
@@ -29,7 +29,7 @@ X.UI.Layout.Tile = X.UI.Layout.create( {
 \r
                data.preMesure( w, h );\r
                \r
-               if( isNeedsDetection && ( data.boxWidth === X.UI.Attr.AUTO || data.boxHeight === X.UI.Attr.AUTO ) ) return;\r
+               if( isNeedsDetection && ( data.boxWidth === XUI_Attr_AUTO || data.boxHeight === XUI_Attr_AUTO ) ) return;\r
                \r
                if( ( uinodes  = data.uinodes ) && ( l = uinodes.length ) ){\r
                        _x      = data.contentL;\r
@@ -39,8 +39,8 @@ X.UI.Layout.Tile = X.UI.Layout.create( {
                        gapY    = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.gapY.No ], contentH );\r
                        childW  = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.childWidth.No ], contentW );\r
                        childH  = XUI_AbstractUINode_calcValue( attrs[ data.supportAttrs.childHeight.No ], contentH );\r
-                       numH    = X.UI.Attr.FLOOR( ( _w + gapX ) / ( childW + gapX ) );\r
-                       numV    = l % numH ? X.UI.Attr.FLOOR( l / numH ) + 1 : l / numH;\r
+                       numH    = XUI_Attr_FLOOR( ( _w + gapX ) / ( childW + gapX ) );\r
+                       numV    = l % numH ? XUI_Attr_FLOOR( l / numH ) + 1 : l / numH;\r
                        _h      = _y + data.contentB + ( childH + gapY ) * numH - gapY;\r
                        \r
                        startX  = attrs[ data.supportAttrs.hCenter.No ] ?\r
@@ -64,18 +64,23 @@ X.UI.Layout.Tile = X.UI.Layout.create( {
                        data.contentHeight = _h;\r
                        \r
                } else\r
-               if( data.contentHeight === X.UI.Attr.AUTO ){\r
-                       data.contentHeight = data.minContentHeight !== X.UI.Attr.AUTO ? data.minContentHeight : 0;\r
+               if( data.contentHeight === XUI_Attr_AUTO ){\r
+                       data.contentHeight = data.minContentHeight !== XUI_Attr_AUTO ? data.minContentHeight : 0;\r
                };\r
                \r
                data.postMesure();\r
-               data.updateLayout( x + data.boxX, y + data.boxY );\r
+\r
+               if( !isNeedsDetection ){\r
+                       data.boxX += x;\r
+                       data.boxY += y;                 \r
+               };\r
+               return true;\r
        }\r
 });\r
 \r
 X.UI.TileBox = X.UI.Box.presets(\r
        'TileBox',\r
-       X.UI.Layout.Tile,\r
+       XUI_Layout_Tile,\r
        {\r
                gapX    : '0.2em',\r
                gapY    : '0.2em',\r
index ed1cd7e..5935ebd 100644 (file)
@@ -1,6 +1,6 @@
-X.UI._ChromeBox = X.UI._Box.inherits(\r
+var XUI_ChromeBox = XUI_Box.inherits(\r
        '_ChromeBox',\r
-       X_Class.PRIVATE_DATA | X_Class.SUPER_ACCESS,\r
+       X_Class.PRIVATE_DATA,\r
        {\r
                chromeNodes   : null,\r
                containerNode : null,\r
@@ -46,11 +46,11 @@ X.UI._ChromeBox = X.UI._Box.inherits(
 \r
 X.UI.ChromeBox = X.UI.Box.inherits(\r
        'ChromeBox',\r
-       X_Class.SUPER_ACCESS,\r
-       X.UI._ChromeBox,\r
+       X_Class.NONE,\r
+       XUI_ChromeBox,\r
        {\r
                Constructor : function(){\r
-                       X_Class_newPrivate( this, X.UI.Layout.Canvas, arguments );\r
+                       X_Class_newPrivate( this, XUI_Layout_Canvas, arguments );\r
                },\r
                add : function( node /* , node, node ... */ ){\r
                        X_Class_getPrivate( this ).containerNode.addAt( this.numNodes(), Array.prototype.slice.call( arguments ) );\r
index 81c1958..15a613f 100644 (file)
@@ -30,27 +30,23 @@ function X_UI_ScrollBox_momentum( current, start, time, lowerMargin, wrapperSize
 \r
 var X_UI_ScrollBox_SUPPORT_ATTRS = {\r
                // スクロール開始するために必要な移動距離、縦か横、どちらか制限する場合、より重要\r
-               directionLockThreshold : [     10, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.LENGTH ],\r
-               scrollXEnabled         : [   true, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],\r
-               scrollYEnabled         : [   true, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],\r
-               scrollEnabled          : [   true, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],\r
-               bounceEnabled          : [   true, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],\r
-               bounceTime             : [    600, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.TIME ],\r
-               useWheel               : [   true, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],\r
-               useKey                 : [   true, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],\r
-               hasScrollShadow        : [   true, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],\r
-               scrollShadowColor      : [ '#000', X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.COLOR ]\r
+               directionLockThreshold : [     10, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.LENGTH ],\r
+               scrollXEnabled         : [   true, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ],\r
+               scrollYEnabled         : [   true, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ],\r
+               scrollEnabled          : [   true, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ],\r
+               bounceEnabled          : [   true, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ],\r
+               bounceTime             : [    600, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.TIME ],\r
+               useWheel               : [   true, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ],\r
+               useKey                 : [   true, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ],\r
+               hasScrollShadow        : [   true, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ],\r
+               scrollShadowColor      : [ '#000', XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.COLOR ]\r
        };\r
 \r
 \r
-X.UI._ScrollBox = X.UI._ChromeBox.inherits(\r
+var XUI_ScrollBox = XUI_ChromeBox.inherits(\r
        '_ScrollBox',\r
-       X_Class.PRIVATE_DATA | X_Class.SUPER_ACCESS,\r
+       X_Class.PRIVATE_DATA,\r
        {\r
-               //elmScroll     : null,\r
-               //elmScroller   : null,\r
-               //elmScrollbar  : null,\r
-               \r
                directionLockThreshold : 10,\r
                scrollXEnabled         : true,\r
                scrollYEnabled         : true,\r
@@ -63,7 +59,7 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
                hasScrollShadow        : true,\r
                scrollShadowColor      : '#000',\r
                \r
-               supportAttrs    : XUI_Attr_createAttrDef( X.UI.Attr.Support, X_UI_ScrollBox_SUPPORT_ATTRS ),\r
+               supportAttrs    : XUI_Attr_createAttrDef( XUI_Attr_Support, X_UI_ScrollBox_SUPPORT_ATTRS ),\r
                \r
                scrolling       : false,\r
                \r
@@ -86,8 +82,10 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
                \r
                scrollX         : 0, // px\r
                scrollY         : 0, // px\r
-               maxScrollX      : 0, // px\r
-               maxScrollY      : 0, // px\r
+               scrollXMax      : 0, // px\r
+               scrollYMax      : 0, // px\r
+               scrollXRatio    : 0, // この値は scroll 不要になっても保持される。 scroll 必要時に参照される\r
+               scrollYRatio    : 0,            \r
                startX          : 0, // px\r
                startY          : 0, // px\r
                absStartX       : 0, // px\r
@@ -96,29 +94,26 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
                pointY          : 0, // px\r
                distX               : 0, // px\r
                distY               : 0, // px\r
-               directionX      : 0, // px\r
-               directionY      : 0, // px      \r
-               scrollXPercent  : 0, // この値は scroll 不要になっても保持される。 scroll 必要時に参照される\r
-               scrollYPercent  : 0,\r
+               directionX      : 0, // -1, 0, 1\r
+               directionY      : 0, // -1, 0, 1\r
                \r
                lastScrollWidth  : 0,\r
                lastScrollHeight : 0,\r
                lastBoxWidth     : 0,\r
                lastBoxHeight    : 0,\r
                \r
-               _containerNode : null,\r
-               scrollManager  : null,\r
+               _containerNode   : null,\r
+               xnodeSlider      : null,\r
                \r
                Constructor : function( layout, args ){\r
                        this[ 'Super' ]( layout, args );\r
                        this._containerNode = X_Class_getPrivate( this.containerNode );\r
-                       this._containerXNode = this._containerNode.xnode[ 'className' ]( 'ScrollSlider' ).listen( X_EVENT_ANIME_END, this, X_UI_ScrollBox_onAnimeEnd );\r
+                       this.xnodeSlider = this._containerNode.xnode[ 'className' ]( 'ScrollSlider' ).listen( X_EVENT_ANIME_END, this, X_UI_ScrollBox_onAnimeEnd );\r
                        this.xnode[ 'className' ]( 'ScrollBox' );\r
                },\r
                \r
                creationComplete : function(){\r
-                       X.UI._Box.prototype.creationComplete.apply( this, arguments );\r
-                       this.scrollManager;\r
+                       XUI_Box.prototype.creationComplete.apply( this, arguments );\r
                },\r
                \r
                calculate : function(){\r
@@ -127,7 +122,7 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
                        this.lastBoxWidth     = this.boxWidth;\r
                        this.lastBoxHeight    = this.boxHeight;\r
                        \r
-                       X.UI._Box.prototype.calculate.apply( this, arguments );\r
+                       XUI_Box.prototype.calculate.apply( this, arguments );\r
                        \r
                        // TODO root の layout_complete 後に。\r
                        // TODO calculate 前に scroll の解放。\r
@@ -137,7 +132,7 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
                                        this.lastScrollHeight !== this._containerNode.boxHeight ||\r
                                        this.lastBoxWidth    !== this.boxWidth    || this.lastBoxHeight    !== this.boxHeight\r
                                ){\r
-                                       X_UI_rootData[ 'listenOnce' ]( X.UI.Event.LAYOUT_COMPLETE, this, X_UI_ScrollBox_onLayoutComplete );\r
+                                       X_UI_rootData[ 'listenOnce' ]( XUI_Event.LAYOUT_COMPLETE, this, X_UI_ScrollBox_onLayoutComplete );\r
                                };\r
                },\r
        \r
@@ -154,7 +149,7 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
                },\r
                \r
                _remove : function(){\r
-                       X.UI._AbstractUINode.prototype._remove.apply( this, arguments );\r
+                       XUI_AbstractUINode.prototype._remove.apply( this, arguments );\r
                        if( this.scrolling ){\r
                                // remove scroll\r
                        };\r
@@ -164,26 +159,28 @@ X.UI._ScrollBox = X.UI._ChromeBox.inherits(
 );\r
 \r
 function X_UI_ScrollBox_onLayoutBefore( e ){\r
-       //this._containerXNode.stop();\r
+       this.scrollXRatio = this.scrollX ? this.scrollXMax / this.scrollX : 0;\r
+       this.scrollYRatio = this.scrollY ? this.scrollYMax / this.scrollY : 0;\r
+       this.xnodeSlider.stop();\r
 };\r
 \r
 function X_UI_ScrollBox_onLayoutComplete( e ){\r
        // scroll の停止、GPU の解除\r
-       var font = this.fontSize = this._containerXNode.call( 'fontSize' );\r
+       var font = this.fontSize = this.xnodeSlider.call( 'fontSize' );\r
        \r
-       this.maxScrollX = ( this.boxWidth  - this._containerNode.boxWidth ) * font;\r
-       this.maxScrollY = ( this.boxHeight - this._containerNode.boxHeight ) * font;\r
+       this.scrollXMax = ( this.boxWidth  - this._containerNode.boxWidth )  * font;\r
+       this.scrollYMax = ( this.boxHeight - this._containerNode.boxHeight ) * font;\r
 \r
-       this.hasHScroll = this.scrollXEnabled && this.maxScrollX < 0;\r
-       this.hasVScroll = this.scrollYEnabled && this.maxScrollY < 0;\r
+       this.hasHScroll = this.scrollXEnabled && this.scrollXMax < 0;\r
+       this.hasVScroll = this.scrollYEnabled && this.scrollYMax < 0;\r
 \r
        if( !this.hasHScroll ){\r
-               this.maxScrollX  = 0;\r
+               this.scrollXMax  = 0;\r
                //this.scrollWidth = this.boxWidth;\r
        };\r
 \r
        if( !this.hasVScroll ){\r
-               this.maxScrollY   = 0;\r
+               this.scrollYMax   = 0;\r
                //this.scrollHeight = this.boxHeight;\r
        };\r
 \r
@@ -200,25 +197,27 @@ function X_UI_ScrollBox_onLayoutComplete( e ){
        if( this.hasHScroll || this.hasVScroll ){\r
                // scroll が必要。\r
                if( this.scrolling ){\r
-                       this.scrollTo( this.maxScrollX * this.scrollXPercent, this.maxScrollY * this.scrollYPercent, 100 );\r
+                       X_UI_ScrollBox_translate( this, this.scrollXMax * this.scrollXRatio, this.scrollYMax * this.scrollYRatio, 0, '', 0 );\r
                } else {\r
                        // scroller 作る\r
-                       this[ 'listen' ]( X.UI.Event._POINTER_DOWN, this, X_UI_ScrollBox_onStart );\r
-                       X_UI_rootData[ 'listen' ]( X.UI.Event.LAYOUT_BEFORE, this, X_UI_ScrollBox_onLayoutBefore );\r
+                       this[ 'listen' ]( XUI_Event._POINTER_DOWN, this, X_UI_ScrollBox_onStart );\r
+                       X_UI_rootData[ 'listen' ]( XUI_Event.LAYOUT_BEFORE, this, X_UI_ScrollBox_onLayoutBefore );\r
                        \r
-                       this.scrollTo( this.maxScrollX * this.scrollXPercent, this.maxScrollY * this.scrollYPercent );\r
+                       X_UI_ScrollBox_translate( this, this.scrollXMax * this.scrollXRatio, this.scrollYMax * this.scrollYRatio, 0, '', 0 );\r
                        this.scrolling = true;\r
                };\r
        } else\r
        // scroll 不要\r
        if( this.scrolling ){\r
                // scroller 削除\r
-               this[ 'unlisten' ]( X.UI.Event._POINTER_DOWN, this, X_UI_ScrollBox_onStart );\r
-               X_UI_rootData[ 'unlisten' ]( X.UI.Event.LAYOUT_BEFORE,   this, X_UI_ScrollBox_onLayoutBefore );\r
+               this[ 'unlisten' ]( XUI_Event._POINTER_DOWN, this, X_UI_ScrollBox_onStart );\r
+               X_UI_rootData[ 'unlisten' ]( XUI_Event.LAYOUT_BEFORE,   this, X_UI_ScrollBox_onLayoutBefore );\r
                \r
-               ( this.scrollX !== 0 || this.scrollY !== 0 ) && this.scrollTo( 0, 0 );\r
+               ( this.scrollX !== 0 || this.scrollY !== 0 ) && X_UI_ScrollBox_translate( this, 0, 0, 0, '', 0 );\r
                \r
                delete this.scrolling;\r
+               delete this.scrollXRatio;\r
+               delete this.scrollYRatio;\r
        };\r
 };\r
 \r
@@ -228,7 +227,7 @@ function X_UI_ScrollBox_onLayoutComplete( e ){
                        opt_easing  = opt_easing === '' ? '' : opt_easing || 'circular';\r
                        opt_release = 0 <= opt_release ? opt_release : 300;\r
                        \r
-                       that._containerXNode.animate(\r
+                       that.xnodeSlider.animate(\r
                                {\r
                                        x : that.scrollX,\r
                                        y : that.scrollY\r
@@ -274,7 +273,7 @@ function X_UI_ScrollBox_onStart( e ){
        // スクロール中の停止\r
        if( this.isInTransition || this.isAnimating ){\r
                this.isInTransition = this.isAnimating = false;\r
-               this[ 'dispatch' ]( X.UI.Event.SCROLL_END );\r
+               this[ 'dispatch' ]( XUI_Event.SCROLL_END );\r
        };                      \r
 \r
        this.startX    = this.scrollX;\r
@@ -284,8 +283,8 @@ function X_UI_ScrollBox_onStart( e ){
        this.pointX    = e.pageX;\r
        this.pointY    = e.pageY;\r
        \r
-       this[ 'listen' ]( X.UI.Event._POINTER_MOVE, this, X_UI_ScrollBox_onMove );\r
-       this[ 'listen' ]( [ X.UI.Event._POINTER_UP, X.UI.Event._POINTER_CANCEL ], this, X_UI_ScrollBox_onEnd );\r
+       this[ 'listen' ]( XUI_Event._POINTER_MOVE, this, X_UI_ScrollBox_onMove );\r
+       this[ 'listen' ]( [ XUI_Event._POINTER_UP, XUI_Event._POINTER_CANCEL ], this, X_UI_ScrollBox_onEnd );\r
 \r
        return ret | X_Callback_PREVENT_DEFAULT;\r
 };\r
@@ -306,7 +305,7 @@ function X_UI_ScrollBox_onMove( e ){
        };\r
 \r
        // gpu の用意\r
-       if( !this._containerXNode[ '_anime' ] ){\r
+       if( !this.xnodeSlider[ '_anime' ] ){\r
                //console.log( 'gpuレイヤーの用意 ' + e.pageY );\r
                //console.log( 'mov1 x:' + this.scrollX + ' y:' + this.scrollY );\r
                X_UI_ScrollBox_translate( this, this.scrollX, this.scrollY, 0, '', 300 );\r
@@ -353,25 +352,25 @@ function X_UI_ScrollBox_onMove( e ){
        deltaY = this.hasVScroll ? deltaY : 0;\r
 \r
        if( !this.moved ){\r
-               this[ 'dispatch' ]( X.UI.Event.SCROLL_BEFORE_MOVE );\r
+               this[ 'dispatch' ]( XUI_Event.SCROLL_BEFORE_MOVE );\r
                this.moved  = true;\r
                this.minusX = deltaX;\r
                this.minusY = deltaY;\r
        } else {\r
-               this[ 'dispatch' ]( X.UI.Event.SCROLL_MOVE );\r
+               this[ 'dispatch' ]( XUI_Event.SCROLL_MOVE );\r
        };\r
 \r
        newX = this.scrollX + deltaX;// - this.minusX;\r
        newY = this.scrollY + deltaY;// - this.minusY;\r
 \r
        // Slow down if outside of the boundaries\r
-       if( 0 < newX || newX < this.maxScrollX ){\r
-               newX = this.bounceEnabled ? this.scrollX + ( deltaX ) / 3 : 0 < newX ? 0 : this.maxScrollX;\r
+       if( 0 < newX || newX < this.scrollXMax ){\r
+               newX = this.bounceEnabled ? this.scrollX + ( deltaX ) / 3 : 0 < newX ? 0 : this.scrollXMax;\r
        };\r
        \r
-       if( 0 < newY || newY < this.maxScrollY ){\r
-               //console.log( 'slow... ' + newY + ' ' + this.maxScrollY );\r
-               newY = this.bounceEnabled ? this.scrollY + ( deltaY ) / 3 : 0 < newY ? 0 : this.maxScrollY;\r
+       if( 0 < newY || newY < this.scrollYMax ){\r
+               //console.log( 'slow... ' + newY + ' ' + this.scrollYMax );\r
+               newY = this.bounceEnabled ? this.scrollY + ( deltaY ) / 3 : 0 < newY ? 0 : this.scrollYMax;\r
        };\r
 \r
        this.directionX = 0 < deltaX ? -1 : deltaX < 0 ? 1 : 0;\r
@@ -386,7 +385,7 @@ function X_UI_ScrollBox_onMove( e ){
                this.startY = this.scrollY;\r
        };\r
        // イベントの拘束\r
-       return ret | X_Callback_PREVENT_DEFAULT | X_Callback_MONOPOLY;\r
+       return ret | X_Callback_PREVENT_DEFAULT | X_Callback_CAPTURE_POINTER;\r
 };\r
 \r
 function X_UI_ScrollBox_onEnd( e ){\r
@@ -397,8 +396,8 @@ function X_UI_ScrollBox_onEnd( e ){
                momentumX, momentumY,\r
                duration, distanceX, distanceY;\r
                                                \r
-       this[ 'unlisten' ]( X.UI.Event._POINTER_MOVE, this, X_UI_ScrollBox_onMove );\r
-       this[ 'unlisten' ]( [ X.UI.Event._POINTER_UP, X.UI.Event._POINTER_CANCEL ], this, X_UI_ScrollBox_onEnd );\r
+       this[ 'unlisten' ]( XUI_Event._POINTER_MOVE, this, X_UI_ScrollBox_onMove );\r
+       this[ 'unlisten' ]( [ XUI_Event._POINTER_UP, XUI_Event._POINTER_CANCEL ], this, X_UI_ScrollBox_onEnd );\r
        \r
        if( !this.scrollEnabled || e.pointerType !== this.initiated ){\r
                return ret;\r
@@ -429,10 +428,10 @@ function X_UI_ScrollBox_onEnd( e ){
        // start momentum animation if needed\r
        if( this.momentumEnabled && duration < 300 ){\r
                momentumX = this.hasHScroll ?\r
-                                               X_UI_ScrollBox_momentum( this.scrollX, this.startX, duration, this.maxScrollX, this.bounceEnabled ? this.boxWidth  * this.fontSize : 0, this.deceleration ) :\r
+                                               X_UI_ScrollBox_momentum( this.scrollX, this.startX, duration, this.scrollXMax, this.bounceEnabled ? this.boxWidth  * this.fontSize : 0, this.deceleration ) :\r
                                                { destination: newX, duration: 0 };\r
                momentumY = this.hasVScroll   ?\r
-                                               X_UI_ScrollBox_momentum( this.scrollY, this.startY, duration, this.maxScrollY, this.bounceEnabled ? this.boxHeight * this.fontSize : 0, this.deceleration ) :\r
+                                               X_UI_ScrollBox_momentum( this.scrollY, this.startY, duration, this.scrollYMax, this.bounceEnabled ? this.boxHeight * this.fontSize : 0, this.deceleration ) :\r
                                                { destination: newY, duration: 0 };\r
                newX = momentumX.destination;\r
                newY = momentumY.destination;\r
@@ -444,7 +443,7 @@ function X_UI_ScrollBox_onEnd( e ){
 \r
        if( newX != this.scrollX || newY != this.scrollY ){\r
                // change easing function when scroller goes out of the boundaries\r
-               if( 0 < newX || newX < this.maxScrollX || 0 < newY || newY < this.maxScrollY ){\r
+               if( 0 < newX || newX < this.scrollXMax || 0 < newY || newY < this.scrollYMax ){\r
                        easing = 'quadratic';\r
                };\r
 \r
@@ -456,7 +455,7 @@ function X_UI_ScrollBox_onEnd( e ){
        console.log( 'end1 x:' + newX + ' y:' + newY );\r
        this.scrollTo( newX, newY, 0, '', 1000 );       // ensures that the last position is rounded\r
 \r
-       this[ 'dispatch' ]( X.UI.Event.SCROLL_END );\r
+       this[ 'dispatch' ]( XUI_Event.SCROLL_END );\r
        \r
        return ret;\r
 };\r
@@ -470,19 +469,19 @@ function X_UI_ScrollBox_resetPosition( that, time ){
        if( !that.hasHScroll || 0 < that.scrollX ){\r
                x = 0;\r
        } else\r
-       if( that.scrollX < that.maxScrollX ){\r
-               x = that.maxScrollX;\r
+       if( that.scrollX < that.scrollXMax ){\r
+               x = that.scrollXMax;\r
        };\r
 \r
        if( !that.hasVScroll || 0 < that.scrollY ){\r
                y = 0;\r
        } else\r
-       if( that.scrollY < that.maxScrollY ){\r
-               y = that.maxScrollY;\r
+       if( that.scrollY < that.scrollYMax ){\r
+               y = that.scrollYMax;\r
        };\r
 \r
        if( x === that.scrollX && y === that.scrollY ){\r
-               console.log( 'no バウンド y:' + y + ' max:' + that.maxScrollY );\r
+               console.log( 'no バウンド y:' + y + ' max:' + that.scrollYMax );\r
                return false;\r
        };\r
 \r
@@ -494,24 +493,24 @@ function X_UI_ScrollBox_resetPosition( that, time ){
 };\r
 \r
 function X_UI_ScrollBox_onAnimeEnd( e ){\r
-       if( e.target !== this._containerXNode || !this.isInTransition ){\r
+       if( e.target !== this.xnodeSlider || !this.isInTransition ){\r
                return X_Callback_NONE;\r
        };\r
        if( !X_UI_ScrollBox_resetPosition( this, this.bounceTime ) ){\r
                this.isInTransition = false;\r
-               this.dispatch( X.UI.Event.SCROLL_END );\r
+               this.dispatch( XUI_Event.SCROLL_END );\r
        };\r
        return X_Callback_NONE;\r
 };\r
 \r
 X.UI.ScrollBox = X.UI.ChromeBox.inherits(\r
        'ScrollBox',\r
-       X_Class.SUPER_ACCESS,\r
-       X.UI._ScrollBox,\r
+       X_Class.NONE,\r
+       XUI_ScrollBox,\r
        {\r
                Constructor : function(){\r
                        var args = [\r
-                                               0, // layout                    \r
+                                               XUI_Layout_Vertical,                    \r
                                                {\r
                                                        name   : 'ScrollBox-Scroller',\r
                                                        role   : 'container',\r
@@ -522,22 +521,24 @@ X.UI.ScrollBox = X.UI.ChromeBox.inherits(
                                                }\r
                                        ],\r
                                i    = arguments.length,\r
-                               arg, layout;\r
+                               arg, layout, attr;\r
                        \r
                        for( ; i; ){\r
                                arg = arguments[ --i ];\r
-                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( X.UI.Layout.Base ) ){\r
+                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( XUI_LayoutBase ) ){\r
                                        layout = arg;\r
-                               } else {\r
+                               } else\r
+                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( X.UI.AbstractUINode ) ){\r
                                        args[ args.length ] = arg;\r
+                               } else\r
+                               if( X_Type_isObject( arg ) ){\r
+                                       attr = arg;\r
                                };\r
                        };\r
                        \r
-                       args[ 0 ] = X.UI.Layout.Vertical;\r
-                       \r
                        X_Class_newPrivate(\r
                                this,\r
-                               X.UI.Layout.Canvas,\r
+                               XUI_Layout_Canvas,\r
                                [\r
                                        {\r
                                                width  : '100%',\r
@@ -546,6 +547,8 @@ X.UI.ScrollBox = X.UI.ChromeBox.inherits(
                                        X.UI.VBox.apply( 0, args )\r
                                ]\r
                        );\r
+                       \r
+                       attr && this.attr( attr );\r
                },\r
                scrollX  : function(){\r
                        \r
index ceb896c..86913ba 100644 (file)
@@ -1,4 +1,4 @@
-X.UI._Text = X.UI._AbstractUINode.inherits(\r
+var XUI_Text = XUI_AbstractUINode.inherits(\r
        '_Text',\r
        X_Class.PRIVATE_DATA,\r
        {\r
@@ -13,7 +13,7 @@ X.UI._Text = X.UI._AbstractUINode.inherits(
                        if( X_Type_isString( content ) && content ){\r
                                this.content = content;\r
                                this.xnode[ 'text' ]( this.content );\r
-                               this.dirty   = X.UI.Dirty.CONTENT;\r
+                               this.dirty   = XUI_Dirty.CONTENT;\r
                        };\r
                }\r
        }\r
@@ -21,19 +21,19 @@ X.UI._Text = X.UI._AbstractUINode.inherits(
 \r
 X.UI.Text = X.UI.AbstractUINode.inherits(\r
        'Text',\r
-       X_Class.SUPER_ACCESS,\r
-       X.UI._Text,\r
+       X_Class.NONE,\r
+       XUI_Text,\r
        {\r
-               Constructor : function( opt_content, opt_cssObj ){\r
+               Constructor : function( opt_content, opt_attrObj ){\r
                        X_Class_newPrivate( this, opt_content );\r
-                       X_Type_isObject( opt_cssObj = opt_cssObj || opt_content ) && this[ 'attr' ]( opt_cssObj );\r
+                       X_Type_isObject( opt_attrObj = opt_attrObj || opt_content ) && this[ 'attr' ]( opt_attrObj );\r
                },\r
                content : function( v ){\r
                        var data = X_Class_getPrivate( this );\r
                        if( data.content !== v ){\r
                                data.xnode && data.xnode[ 'text' ]( v );\r
                                data.rootData.reserveCalc();\r
-                               if( data.dirty < X.UI.Dirty.CONTENT ) data.dirty = X.UI.Dirty.CONTENT;                          \r
+                               if( data.dirty < XUI_Dirty.CONTENT ) data.dirty = XUI_Dirty.CONTENT;\r
                        };\r
                }\r
        }\r
index 26ce539..ec3524c 100644 (file)
@@ -5,7 +5,7 @@ function X_UI_eventRellay( e ){
        var font    = X_ViewPort_baseFontSize,
                x       = e.clientX / font,
                y       = e.clientY / font,
-               type    = X.UI.Event.NameToID[ e.type ],
+               type    = XUI_Event.NameToID[ e.type ],
                i       = 0,
                data    = X_UI_rootData,
                sysOnly = false,
@@ -16,13 +16,13 @@ function X_UI_eventRellay( e ){
        if( !data || X_UI_eventBusy ) return ret;
        data._eventBusy = true;
        
-       if( type !== '' + X.UI.Event._POINTER_MOVE ){
+       if( type !== '' + XUI_Event._POINTER_MOVE ){
                //console.log( e.type + ' ' + type + ' x:' + x + ', y:' + y );
        };
        
        e.type = type;
 
-       if( data && ( data = data.monopolyNodeData ) && ( ret = data[ 'dispatch' ]( e ) ) & X_Callback_MONOPOLY ){
+       if( data && ( data = data.monopolyNodeData ) && ( ret = data[ 'dispatch' ]( e ) ) & X_Callback_CAPTURE_POINTER ){
                X_UI_eventBusy = false;
                return ret | X_Callback_PREVENT_DEFAULT;
        };
@@ -36,7 +36,7 @@ function X_UI_eventRellay( e ){
        while( data ){
                _ret = data[ 'dispatch' ]( e, sysOnly );
                ret |= _ret;
-               if( _ret & X_Callback_MONOPOLY || _ret & X_Callback_STOP_PROPAGATION || _ret & X_Callback_STOP_NOW ) break; // sysOnly = true;
+               if( _ret & X_Callback_CAPTURE_POINTER || _ret & X_Callback_STOP_PROPAGATION || _ret & X_Callback_STOP_NOW ) break; // sysOnly = true;
                data = data.parentData;
        };
        
@@ -47,14 +47,14 @@ function X_UI_eventRellay( e ){
                };
                if( parent !== X_UI_rootData ){
                        data.hoverClassName && data.xnode[ 'removeClass' ]( data.hoverClassName );
-                       data[ '_listeners' ] && data[ '_listeners' ][ X.UI.Event.POINTER_OUT ] && data[ 'dispatch' ]( e, X.UI.Event.POINTER_OUT, false ); // new Event
+                       data[ '_listeners' ] && data[ '_listeners' ][ XUI_Event.POINTER_OUT ] && data[ 'dispatch' ]( e, 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' ][ X.UI.Event.POINTER_IN ] && data[ 'dispatch' ]( e, X.UI.Event.POINTER_IN, true ); // new Event
+                       data[ '_listeners' ] && data[ '_listeners' ][ XUI_Event.POINTER_IN ] && data[ 'dispatch' ]( e, XUI_Event.POINTER_IN, true ); // new Event
                        data.hovering = true;
                };
        };
@@ -67,11 +67,11 @@ function X_UI_eventRellay( e ){
  * 背景画像を読み終える onload で活動開始
  */
 
-X.UI._PageRoot = X.UI._Box.inherits(
+var XUI_PageRoot = XUI_Box.inherits(
        '_PageRoot',
-       X_Class.FINAL | X_Class.PRIVATE_DATA | X_Class.SUPER_ACCESS,
+       X_Class.FINAL | X_Class.PRIVATE_DATA,
        {
-               layout                : X.UI.Layout.Canvas,
+               layout                : XUI_Layout_Canvas,
                
                calcReserved          : false,
                hoverList             : null,
@@ -114,11 +114,11 @@ X.UI._PageRoot = X.UI._Box.inherits(
                        } );
                        
                        // hover や rollover rollout のための move イベントの追加
-                       ( X.UA.IE < 9 ? X_ViewPort_document : X_ViewPort )[ 'listen' ]( 'pointermove', X_UI_eventRellay );
-                       if( counter[ X.UI.Event._POINTER_MOVE ] ){
-                               ++counter[ X.UI.Event._POINTER_MOVE ];
+                       ( 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 ];
                        } else {
-                               counter[ X.UI.Event._POINTER_MOVE ] = 1;
+                               counter[ XUI_Event._POINTER_MOVE ] = 1;
                        };
 
                        X_Timer_once( 0, this, this.afterAddToView );
@@ -147,11 +147,13 @@ X.UI._PageRoot = X.UI._Box.inherits(
                calculate : function( e ){
                        var size, font, w, h;
                        
-                       this[ 'dispatch' ]( X.UI.Event.LAYOUT_BEFORE );
+                       this[ 'dispatch' ]( XUI_Event.LAYOUT_BEFORE );
                        
                        size = X[ 'ViewPort' ][ 'getSize' ]();
                        font = X[ 'ViewPort' ][ 'getBaseFontSize' ]();
                        this.layout.calculate( this, false, 0, 0, size[ 0 ] / font, size[ 1 ] / font );
+                       this.updateLayout();
+                       
                        this.calcReserved = false;
                        
                        X_ViewPort[ 'listenOnce' ]( X_EVENT_AFTER_UPDATE, this, XUI_PageRoot_onViewUpdate );
@@ -169,12 +171,12 @@ X.UI._PageRoot = X.UI._Box.inherits(
 );
 
 function XUI_PageRoot_onViewUpdate( e ){
-       this[ 'dispatch' ]( X.UI.Event.LAYOUT_COMPLETE );
+       this[ 'dispatch' ]( XUI_Event.LAYOUT_COMPLETE );
 };
 
 X.UI.PageRoot = X.UI.Box.presets(
        'PageRoot',
-       X.UI._PageRoot,
+       XUI_PageRoot,
        {
                width  : '100%',
                height : '100%'