You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2015/09/16 00:09:08 UTC

git commit: [flex-asjs] [refs/heads/develop] - fix vertical align

Repository: flex-asjs
Updated Branches:
  refs/heads/develop 8677a786a -> e945a9e30


fix vertical align


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

Branch: refs/heads/develop
Commit: e945a9e30f1f26d48331b3896717b73e8d9039e1
Parents: 8677a78
Author: Alex Harui <ah...@apache.org>
Authored: Tue Sep 15 15:09:48 2015 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Sep 15 15:09:48 2015 -0700

----------------------------------------------------------------------
 .../flex/html/beads/layouts/HorizontalLayout.as | 109 +++++++++----------
 1 file changed, 49 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e945a9e3/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/HorizontalLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/HorizontalLayout.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/HorizontalLayout.as
index 986359e..58ed8f6 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/HorizontalLayout.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/HorizontalLayout.as
@@ -145,11 +145,13 @@ package org.apache.flex.html.beads.layouts
                 lastmr = mr;
                 var marginObject:Object = {};
                 verticalMargins[i] = marginObject;
+                var valign:* = ValuesManager.valuesImpl.getValue(child, "vertical-align");
+                marginObject.valign = valign;
                 if (!hostSizedToContent)
                 {
                     // if host is sized by parent,
                     // we can position and size children horizontally now
-                    setPositionAndHeight(child, top, mt, padding.top, bottom, mb, padding.bottom, h);
+                    setPositionAndHeight(child, top, mt, padding.top, bottom, mb, padding.bottom, h, valign);
                     maxHeight = Math.max(maxHeight, mt + child.height + mb);
                 }
                 else
@@ -167,8 +169,6 @@ package org.apache.flex.html.beads.layouts
                     maxHeight = Math.max(maxHeight, mt + child.height + mb);
                 }
 				xx = child.x + child.width;
-				var valign:* = ValuesManager.valuesImpl.getValue(child, "vertical-align");
-				marginObject.valign = valign;
 			}
             if (hostSizedToContent)
             {
@@ -181,39 +181,9 @@ package org.apache.flex.html.beads.layouts
                     if (child == null || !child.visible) continue;
                     var obj:Object = verticalMargins[i];
                     setPositionAndHeight(child, obj.top, obj.marginTop, padding.top,
-                        obj.bottom, obj.marginBottom, padding.bottom, maxHeight);
+                        obj.bottom, obj.marginBottom, padding.bottom, maxHeight, obj.valign);
                 }
             }
-			for (i = 0; i < n; i++)
-			{
-				child = contentView.getElementAt(i) as IUIBase;
-                ilc = child as ILayoutChild;
-				if (child == null || !child.visible) continue;
-                obj = verticalMargins[i];
-                if (ilc)
-                {
-                    if (!isNaN(ilc.percentHeight))
-                        ilc.setHeight(contentView.height * ilc.percentHeight / 100, !isNaN(ilc.percentHeight));
-                }
-                if (ilc)
-                {
-    				if (obj.valign == "top")
-                        ilc.setY(obj.marginTop + padding.top);
-    				else if (valign == "bottom")
-                        ilc.setY(maxHeight - child.height - obj.marginBottom);
-    				else // TODO: aharui - baseline
-                        ilc.setY((maxHeight - child.height) / 2);
-                }
-                else
-                {
-                    if (obj.valign == "top")
-                        child.y = obj.marginTop + padding.top;
-                    else if (valign == "bottom")
-                        child.y = maxHeight - child.height - obj.marginBottom;
-                    else // TODO: aharui - baseline
-                        child.y = (maxHeight - child.height) / 2;                    
-                }
-			}
 			
 			// Only return true if the contentView needs to be larger; that new
 			// size is stored in the model.
@@ -225,53 +195,72 @@ package org.apache.flex.html.beads.layouts
 		}
         
         private function setPositionAndHeight(child:IUIBase, top:Number, mt:Number, pt:Number,
-                                             bottom:Number, mb:Number, pb:Number, h:Number):void
+                                             bottom:Number, mb:Number, pb:Number, h:Number,
+                                             valign:*):void
         {
             var heightSet:Boolean = false;
             
             var hh:Number = h;
             var ilc:ILayoutChild = child as ILayoutChild;
-            if (!isNaN(top))
-            {
-                if (ilc)
-                    ilc.setY(top + mt);
-                else
-                    child.y = top + mt;
-                hh -= top + mt;
-            }
-            else 
+            if (ilc)
             {
-                if (ilc)
-                    ilc.setY(mt + pt);
-                else
-                    child.y = mt + pt;
-                hh -= mt + pt;
+                if (!isNaN(ilc.percentHeight))
+                    ilc.setHeight(h * ilc.percentHeight / 100, true);
             }
-            if (!isNaN(bottom))
+            if (valign == "top")
             {
                 if (!isNaN(top))
                 {
                     if (ilc)
-                        ilc.setHeight(hh - bottom - mb, true);
-                    else 
+                        ilc.setY(top + mt);
+                    else
+                        child.y = top + mt;
+                    hh -= top + mt;
+                }
+                else 
+                {
+                    if (ilc)
+                        ilc.setY(mt + pt);
+                    else
+                        child.y = mt + pt;
+                    hh -= mt + pt;
+                }
+                if (ilc.isHeightSizedToContent())
+                {
+                    if (!isNaN(bottom))
                     {
-                        child.height = hh - bottom - mb;
-                        heightSet = true;
+                        if (!isNaN(top))
+                        {
+                            if (ilc)
+                                ilc.setHeight(hh - bottom - mb, true);
+                            else 
+                            {
+                                child.height = hh - bottom - mb;
+                                heightSet = true;
+                            }
+                        }
                     }
                 }
-                else
+            }
+            else if (valign == "bottom")
+            {
+                if (!isNaN(bottom))
                 {
                     if (ilc)
                         ilc.setY(h - bottom - mb - child.height);
                     else
                         child.y = h - bottom - mb - child.height;
                 }
+                else
+                {
+                    if (ilc)
+                        ilc.setY(h - mb - child.height);
+                    else
+                        child.y = h - mb - child.height;
+                }
             }
-            if (ilc)
-            {
-                if (!isNaN(ilc.percentHeight))
-                    ilc.setHeight(h * ilc.percentHeight / 100, true);
-            }
+            else
+                child.y = (h - child.height) / 2;                    
             if (!heightSet)
                 child.dispatchEvent(new Event("sizeChanged"));
         }