瀏覽代碼

take element padding into account when passing down constraint

Nicolas Cannasse 6 年之前
父節點
當前提交
2c364b599d
共有 1 個文件被更改,包括 12 次插入8 次删除
  1. 12 8
      h2d/Flow.hx

+ 12 - 8
h2d/Flow.hx

@@ -719,16 +719,18 @@ class Flow extends Object {
 				var c = childAt(i);
 				if( !c.visible ) continue;
 
+				var pw = p.paddingLeft + p.paddingRight;
+				var ph = p.paddingTop + p.paddingBottom;
 				if( !isAbs )
 					c.constraintSize(
-						isConstraintWidth && p.constraint ? maxInWidth / Math.abs(c.scaleX) : -1,
-						isConstraintHeight && p.constraint ? maxInHeight / Math.abs(c.scaleX) : -1
+						isConstraintWidth && p.constraint ? (maxInWidth - pw) / Math.abs(c.scaleX) : -1,
+						isConstraintHeight && p.constraint ? (maxInHeight - ph) / Math.abs(c.scaleX) : -1
 					);
 
 				var b = c.getSize(tmpBounds);
 				var br = false;
-				p.calculatedWidth = Math.ceil(b.xMax) + p.paddingLeft + p.paddingRight;
-				p.calculatedHeight = Math.ceil(b.yMax) + p.paddingTop + p.paddingBottom;
+				p.calculatedWidth = Math.ceil(b.xMax) + pw;
+				p.calculatedHeight = Math.ceil(b.yMax) + ph;
 				if( p.minWidth != null && p.calculatedWidth < p.minWidth ) p.calculatedWidth = p.minWidth;
 				if( p.minHeight != null && p.calculatedHeight < p.minHeight ) p.calculatedHeight = p.minHeight;
 
@@ -849,17 +851,19 @@ class Flow extends Object {
 				var c = childAt(i);
 				if( !c.visible ) continue;
 
+				var pw = p.paddingLeft + p.paddingRight;
+				var ph = p.paddingTop + p.paddingBottom;
 				if( !isAbs )
 					c.constraintSize(
-						isConstraintWidth && p.constraint ? maxInWidth / Math.abs(c.scaleX) : -1,
-						isConstraintHeight && p.constraint ? maxInHeight / Math.abs(c.scaleY) : -1
+						isConstraintWidth && p.constraint ? (maxInWidth - pw) / Math.abs(c.scaleX) : -1,
+						isConstraintHeight && p.constraint ? (maxInHeight - ph) / Math.abs(c.scaleY) : -1
 					);
 
 				var b = c.getSize(tmpBounds);
 				var br = false;
 
-				p.calculatedWidth = Math.ceil(b.xMax) + p.paddingLeft + p.paddingRight;
-				p.calculatedHeight = Math.ceil(b.yMax) + p.paddingTop + p.paddingBottom;
+				p.calculatedWidth = Math.ceil(b.xMax) + pw;
+				p.calculatedHeight = Math.ceil(b.yMax) + ph;
 				if( p.minWidth != null && p.calculatedWidth < p.minWidth ) p.calculatedWidth = p.minWidth;
 				if( p.minHeight != null && p.calculatedHeight < p.minHeight ) p.calculatedHeight = p.minHeight;