run layout in a few more scenarios

Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/b06d5a1d
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/b06d5a1d
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/b06d5a1d

Branch: refs/heads/develop
Commit: b06d5a1d869fbe5f013cd4e83fed6b799bbdfd4b
Parents: e828d17
Author: Alex Harui <[email protected]>
Authored: Wed Apr 26 22:47:37 2017 -0700
Committer: Alex Harui <[email protected]>
Committed: Thu Apr 27 14:15:17 2017 -0700

----------------------------------------------------------------------
 .../flex/org/apache/flex/core/LayoutBase.as     | 33 +++++++++++++++-----
 1 file changed, 25 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b06d5a1d/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/LayoutBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/LayoutBase.as 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/LayoutBase.as
index f23f035..979ebc7 100644
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/LayoutBase.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/core/LayoutBase.as
@@ -53,6 +53,8 @@ package org.apache.flex.core
                {
                }
 
+               private var sawInitComplete:Boolean;
+               
         /**
                 * The strand/host container is also an ILayoutChild because
          * it can have its size dictated by the host's parent which is
@@ -116,12 +118,19 @@ package org.apache.flex.core
                protected function handleChildrenAdded(event:Event):void
                {
                        COMPILE::SWF {
-                               var n:Number = layoutView.numElements;
-                               for(var i:int=0; i < n; i++) {
-                                       var child:IEventDispatcher = 
layoutView.getElementAt(i) as IEventDispatcher;
-                                       child.addEventListener("widthChanged", 
childResizeHandler);
-                                       child.addEventListener("heightChanged", 
childResizeHandler);
-                                       child.addEventListener("sizeChanged", 
childResizeHandler);
+                               if (sawInitComplete)
+                               {
+                                       performLayout();
+                               }
+                               else
+                               {
+                                       var n:Number = layoutView.numElements;
+                                       for(var i:int=0; i < n; i++) {
+                                               var child:IEventDispatcher = 
layoutView.getElementAt(i) as IEventDispatcher;
+                                               
child.addEventListener("widthChanged", childResizeHandler);
+                                               
child.addEventListener("heightChanged", childResizeHandler);
+                                               
child.addEventListener("sizeChanged", childResizeHandler);
+                                       }
                                }
                        }
                }
@@ -163,7 +172,13 @@ package org.apache.flex.core
                 */
                protected function handleInitComplete(event:Event):void
                {
-                       performLayout();
+                       sawInitComplete = true;
+                       
+                       // Complete the setup if the height is sized to content 
or has been explicitly set
+            // and the width is sized to content or has been explicitly set
+                       if ((host.isHeightSizedToContent() || 
!isNaN(host.explicitHeight)) &&
+                (host.isWidthSizedToContent() || !isNaN(host.explicitWidth)))
+                       performLayout();
                }
                
                /**
@@ -195,8 +210,10 @@ package org.apache.flex.core
                                ml = 0;
                        if (marginRight == "auto")
                                mr = 0;
+                       if (margin == "auto")
+                           ml = mr = mt = mb = 0;
                        
-                       return {left:ml, top:mt, right:mr, bottom:mb};
+                       return {left:ml, top:mt, right:mr, bottom:mb, auto: 
(marginLeft == "auto" && marginRight == "auto") || margin == "auto"};
                }
                
                /**

Reply via email to