From 72e2d959f251854e81f83a7b21c90aad1cb9f9c6 Mon Sep 17 00:00:00 2001 From: Christopher Chedeau Date: Mon, 21 Apr 2014 14:53:02 -0700 Subject: [PATCH] handle position: absolute margin as child correctly --- src/Layout.js | 10 +++++----- src/__tests__/Layout-test.js | 11 +++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/Layout.js b/src/Layout.js index e20b837f..479d005f 100755 --- a/src/Layout.js +++ b/src/Layout.js @@ -221,12 +221,12 @@ var computeLayout = (function() { child.layout[pos[mainAxis]] += mainPos; if (getPositionType(child) === 'relative') { mainPos += getDimWithMargin(child, mainAxis) + betweenMainDim; - } - if (!isUndefined(child.layout[dim[crossAxis]])) { - var/*float*/ childCrossDim = getDimWithMargin(child, crossAxis); - if (childCrossDim > crossDim) { - crossDim = childCrossDim; + if (!isUndefined(child.layout[dim[crossAxis]])) { + var/*float*/ childCrossDim = getDimWithMargin(child, crossAxis); + if (childCrossDim > crossDim) { + crossDim = childCrossDim; + } } } } diff --git a/src/__tests__/Layout-test.js b/src/__tests__/Layout-test.js index d9ad949f..c4661524 100755 --- a/src/__tests__/Layout-test.js +++ b/src/__tests__/Layout-test.js @@ -482,6 +482,17 @@ describe('Layout', function() { ); }); + it('should layout node with child with position: absolute and margin', function() { + testLayout( + {style: {}, children: [ + {style: {marginRight: 15, position: 'absolute'}} + ]}, + {width: 0, height: 0, top: 0, left: 0, children: [ + {width: 0, height: 0, top: 0, left: 0} + ]} + ); + }); + it('should layout randomly', function() { function RNG(seed) { this.state = seed;