From 2b6844f00acc3166ba9d57f49acebd0146e6007e Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Tue, 31 Mar 2015 18:58:56 +0800 Subject: [PATCH] Simplified logic distributing flex space. --- src/Layout.c | 17 ++++++----------- src/Layout.js | 12 +++--------- .../com/facebook/csslayout/LayoutEngine.java | 17 ++++++----------- 3 files changed, 15 insertions(+), 31 deletions(-) diff --git a/src/Layout.c b/src/Layout.c index ed1f5695..002b7952 100644 --- a/src/Layout.c +++ b/src/Layout.c @@ -579,8 +579,9 @@ static void layoutNodeImpl(css_node_t *node, float parentMaxWidth) { float baseMainDim; float boundMainDim; - // Iterate over every child-> If the flex share of remaining space doesn't - // meet min/max bounds, remove this child from flex calculations. + // Iterate over every child in the axis. If the flex share of remaining + // space doesn't meet min/max bounds, remove this child from flex + // calculations. for (i = startLine; i < endLine; ++i) { child = node->get_child(node->context, i); if (isFlex(child)) { @@ -609,15 +610,9 @@ static void layoutNodeImpl(css_node_t *node, float parentMaxWidth) { if (isFlex(child)) { // At this point we know the final size of the element in the main // dimension - baseMainDim = flexibleMainDim * getFlex(child) + - getPaddingAndBorderAxis(child, mainAxis); - boundMainDim = boundAxis(child, mainAxis, baseMainDim); - - if (baseMainDim == boundMainDim) { - child->layout.dimensions[dim[mainAxis]] = baseMainDim; - } else { - child->layout.dimensions[dim[mainAxis]] = boundMainDim; - } + child->layout.dimensions[dim[mainAxis]] = boundAxis(child, mainAxis, + flexibleMainDim * getFlex(child) + getPaddingAndBorderAxis(child, mainAxis) + ); maxWidth = CSS_UNDEFINED; if (isDimDefined(node, CSS_FLEX_DIRECTION_ROW)) { diff --git a/src/Layout.js b/src/Layout.js index 366adae5..86978855 100755 --- a/src/Layout.js +++ b/src/Layout.js @@ -501,15 +501,9 @@ var computeLayout = (function() { if (isFlex(child)) { // At this point we know the final size of the element in the main // dimension - baseMainDim = flexibleMainDim * getFlex(child) + - getPaddingAndBorderAxis(child, mainAxis); - boundMainDim = boundAxis(child, mainAxis, baseMainDim); - - if (baseMainDim === boundMainDim) { - child.layout[dim[mainAxis]] = baseMainDim; - } else { - child.layout[dim[mainAxis]] = boundMainDim; - } + child.layout[dim[mainAxis]] = boundAxis(child, mainAxis, + flexibleMainDim * getFlex(child) + getPaddingAndBorderAxis(child, mainAxis) + ); maxWidth = CSS_UNDEFINED; if (isDimDefined(node, CSS_FLEX_DIRECTION_ROW)) { diff --git a/src/java/src/com/facebook/csslayout/LayoutEngine.java b/src/java/src/com/facebook/csslayout/LayoutEngine.java index e214db17..6169fbcf 100644 --- a/src/java/src/com/facebook/csslayout/LayoutEngine.java +++ b/src/java/src/com/facebook/csslayout/LayoutEngine.java @@ -524,8 +524,9 @@ public class LayoutEngine { float baseMainDim; float boundMainDim; - // Iterate over every child. If the flex share of remaining space doesn't - // meet min/max bounds, remove this child from flex calculations. + // Iterate over every child in the axis. If the flex share of remaining + // space doesn't meet min/max bounds, remove this child from flex + // calculations. for (i = startLine; i < endLine; ++i) { child = node.getChildAt(i); if (isFlex(child)) { @@ -554,15 +555,9 @@ public class LayoutEngine { if (isFlex(child)) { // At this point we know the final size of the element in the main // dimension - baseMainDim = flexibleMainDim * getFlex(child) + - getPaddingAndBorderAxis(child, mainAxis); - boundMainDim = boundAxis(child, mainAxis, baseMainDim); - - if (baseMainDim == boundMainDim) { - setLayoutDimension(child, getDim(mainAxis), baseMainDim); - } else { - setLayoutDimension(child, getDim(mainAxis), boundMainDim); - } + setLayoutDimension(child, getDim(mainAxis), boundAxis(child, mainAxis, + flexibleMainDim * getFlex(child) + getPaddingAndBorderAxis(child, mainAxis) + )); maxWidth = CSSConstants.UNDEFINED; if (isDimDefined(node, CSSFlexDirection.ROW)) {