You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2017/04/11 16:00:46 UTC

[21/44] git commit: [flex-asjs] [refs/heads/develop] - More layout adjustments.

More layout adjustments.


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

Branch: refs/heads/develop
Commit: 1f41c284725236fdb4b42872341474ef604ca21f
Parents: 087b870
Author: Peter Ent <pe...@apache.org>
Authored: Mon Apr 3 17:25:49 2017 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Mon Apr 3 17:25:49 2017 -0400

----------------------------------------------------------------------
 .../FlexibleFirstChildHorizontalLayout.as       | 21 +++++++--
 .../html/beads/layouts/HorizontalFlexLayout.as  | 49 +++++++++++++-------
 2 files changed, 48 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f41c284/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
index 6af7d8a..f276074 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
@@ -51,7 +51,7 @@ package org.apache.flex.html.beads.layouts
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-	public class FlexibleFirstChildHorizontalLayout extends LayoutBase implements IBeadLayout
+	public class FlexibleFirstChildHorizontalLayout extends HorizontalLayout
 	{
         /**
          *  Constructor.
@@ -122,6 +122,12 @@ package org.apache.flex.html.beads.layouts
 
 			var n:Number = contentView.numElements;
 			if (n == 0) return false;
+			
+			// if the layoutView has no width yet, this layout cannot
+			// be run successfully, so default to HorizontalLayout.
+			if (host.isWidthSizedToContent()) {
+				return super.layout();
+			}
 
 			var maxWidth:Number = 0;
 			var maxHeight:Number = 0;
@@ -135,8 +141,13 @@ package org.apache.flex.html.beads.layouts
 
 			var paddingMetrics:Rectangle = CSSContainerUtils.getPaddingMetrics(host);
 			var borderMetrics:Rectangle = CSSContainerUtils.getBorderMetrics(host);
+			
+			// adjust the host's usable size by the metrics. If hostSizedToContent, then the
+			// resulting adjusted value may be less than zero.
+			hostWidth -= paddingMetrics.left + paddingMetrics.right + borderMetrics.left + borderMetrics.right;
+			hostHeight -= paddingMetrics.top + paddingMetrics.bottom + borderMetrics.top + borderMetrics.bottom;
 
-			var xpos:Number = hostWidth - borderMetrics.right - paddingMetrics.right;
+			var xpos:Number = hostWidth + borderMetrics.left + paddingMetrics.left;
 			var ypos:Number = borderMetrics.top + paddingMetrics.left;
 			var adjustedWidth:Number = 0;
 
@@ -154,16 +165,16 @@ package org.apache.flex.html.beads.layouts
 				if (!hostSizedToContent) {
 					var childHeight:Number = child.height;
 					if (ilc != null && !isNaN(ilc.percentHeight)) {
-						childHeight = (hostHeight-borderMetrics.top-borderMetrics.bottom-paddingMetrics.top-paddingMetrics.bottom) * ilc.percentHeight/100.0;
+						childHeight = hostHeight * ilc.percentHeight/100.0;
 						ilc.setHeight(childHeight);
 					}
 					// the following code middle-aligns the child
-					childYpos = hostHeight/2 - (childHeight + margins.top + margins.bottom)/2;
+					childYpos = hostHeight/2 - childHeight/2;
 				}
 
 				if (ilc) {
 					if (!isNaN(ilc.percentWidth)) {
-						ilc.setWidth((contentView.width-borderMetrics.left-borderMetrics.right-paddingMetrics.left-paddingMetrics.right) * ilc.percentWidth / 100);
+						ilc.setWidth(hostWidth * ilc.percentWidth / 100);
 					}
 				}
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/1f41c284/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalFlexLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalFlexLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalFlexLayout.as
index eb30512..cb820a6 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalFlexLayout.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/HorizontalFlexLayout.as
@@ -20,6 +20,7 @@ package org.apache.flex.html.beads.layouts
 {
 //	import org.apache.flex.html.beads.layouts.HorizontalLayout;
 
+	import org.apache.flex.core.LayoutBase;
 	import org.apache.flex.core.ILayoutChild;
 	import org.apache.flex.core.ILayoutHost;
 	import org.apache.flex.core.ILayoutView;
@@ -38,7 +39,7 @@ package org.apache.flex.html.beads.layouts
 		import org.apache.flex.utils.CSSContainerUtils;
 	}
 
-	public class HorizontalFlexLayout extends HorizontalLayout
+	public class HorizontalFlexLayout extends LayoutBase
 	{
 		/**
 		 * Constructor.
@@ -114,12 +115,25 @@ package org.apache.flex.html.beads.layouts
 				var maxWidth:Number = 0;
 				var maxHeight:Number = 0;
 				var growCount:Number = 0;
-				var remainingWidth:Number = contentView.width;
 				var childData:Array = [];
+				var hostWidthSizedToContent:Boolean = host.isWidthSizedToContent();
+				var hostHeightSizedToContent:Boolean = host.isHeightSizedToContent();
+				var hostWidth:Number = hostWidthSizedToContent ? 0 : contentView.width;
+				var hostHeight:Number = hostHeightSizedToContent ? 0 : contentView.height;
 
 				var ilc:ILayoutChild;
 				var data:Object;
 				var canAdjust:Boolean = false;
+				
+				var paddingMetrics:Rectangle = CSSContainerUtils.getPaddingMetrics(host);
+				var borderMetrics:Rectangle = CSSContainerUtils.getBorderMetrics(host);
+				
+				// adjust the host's usable size by the metrics. If hostSizedToContent, then the
+				// resulting adjusted value may be less than zero.
+				hostWidth -= paddingMetrics.left + paddingMetrics.right + borderMetrics.left + borderMetrics.right;
+				hostHeight -= paddingMetrics.top + paddingMetrics.bottom + borderMetrics.top + borderMetrics.bottom;
+				
+				var remainingWidth:Number = hostWidth;
 
 				//trace("HorizontalFlexLayout for "+UIBase(host).id+" with remainingWidth: "+remainingWidth);
 
@@ -133,9 +147,11 @@ package org.apache.flex.html.beads.layouts
 					}
 
 					ilc = child as ILayoutChild;
+					
+					var margins:Object = childMargins(child, hostWidth, hostHeight);
 
 					var flexGrow:Object = ValuesManager.valuesImpl.getValue(child, "flex-grow");
-					var growValue:Number = -1;
+					var growValue:Number = 0;
 					if (flexGrow != null) {
 						growValue = Number(flexGrow);
 						if (!isNaN(growValue) && growValue > 0) growCount++;
@@ -145,20 +161,19 @@ package org.apache.flex.html.beads.layouts
 					var useHeight:Number = -1;
 					if (ilc) {
 						if (!isNaN(ilc.explicitHeight)) useHeight = ilc.explicitHeight;
-						else if (!isNaN(ilc.percentHeight)) useHeight = contentView.height * (ilc.percentHeight/100.0);
-						else useHeight = contentView.height;
+						else if (!isNaN(ilc.percentHeight)) useHeight = hostHeight * (ilc.percentHeight/100.0);
+						else useHeight = hostHeight;
 					}
-					if (useHeight > contentView.height) useHeight = contentView.height;
+					if (useHeight > hostHeight) useHeight = hostHeight;
 
 					var useWidth:Number = -1;
 					if (ilc) {
 						if (!isNaN(ilc.explicitWidth)) useWidth = ilc.explicitWidth;
-						else if (!isNaN(ilc.percentWidth)) useWidth = contentView.width * (ilc.percentWidth/100.0);
+						else if (!isNaN(ilc.percentWidth)) useWidth = hostWidth * (ilc.percentWidth/100.0);
 						else useWidth = ilc.width;
 					}
-					if (growValue == 0 && useWidth > 0) remainingWidth -= useWidth;
-
-					var margins:Object = childMargins(child, contentView.width, contentView.height);
+					if (growValue == 0 && useWidth > 0) remainingWidth -= useWidth + margins.left + margins.right;
+					else remainingWidth -= margins.left + margins.right;
 
 					if (maxWidth < useWidth) maxWidth = useWidth;
 					if (maxHeight < useHeight) maxHeight = useHeight;
@@ -168,8 +183,8 @@ package org.apache.flex.html.beads.layouts
 									grow:growValue, canAdjust:canAdjust});
 				}
 
-				var xpos:Number = 0;
-				var ypos:Number = 0;
+				var xpos:Number = borderMetrics.left + paddingMetrics.left;
+				var ypos:Number = borderMetrics.top + paddingMetrics.top;
 
 				// Second pass sizes and positions the children based on the data gathered.
 				for(i=0; i < n; i++)
@@ -196,21 +211,21 @@ package org.apache.flex.html.beads.layouts
 					if (ilc) {
 						ilc.setX(xpos + data.ml);
 						ilc.setY(ypos + data.mt);
-						ilc.setHeight(useHeight - data.mt - data.mb);
+						ilc.height = useHeight; //setHeight(useHeight);
 						if (useWidth > 0) {
-							if (setWidth) ilc.setWidth(useWidth - data.ml - data.mr);
+							if (setWidth) ilc.setWidth(useWidth);
 							else ilc.width = useWidth;
 						}
 					} else {
 						child.x = xpos + data.ml;
 						child.y = ypos + data.mt;
-						child.height = useHeight - data.mt - data.b;
+						child.height = useHeight;
 						if (data.width > 0) {
-							child.width = useWidth - data.mr - data.ml;
+							child.width = useWidth;
 						}
 					}
 
-					xpos += useWidth + data.ml + data.mr;
+					xpos += useWidth + data.mr + data.ml;
 
 					//trace("HorizontalFlexLayout: setting child "+i+" to "+child.width+" x "+child.height+" at "+child.x+", "+child.y);
 				}