don't run this part unless there are enough children
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/25fd919d Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/25fd919d Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/25fd919d Branch: refs/heads/develop Commit: 25fd919dd1a081dda3b36f21b2ce8695069009ed Parents: a77e7f9 Author: Alex Harui <[email protected]> Authored: Fri Jan 23 12:21:23 2015 -0800 Committer: Alex Harui <[email protected]> Committed: Fri Jan 23 12:24:05 2015 -0800 ---------------------------------------------------------------------- .../layouts/OneFlexibleChildVerticalLayout.as | 251 ++++++++++--------- 1 file changed, 127 insertions(+), 124 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/25fd919d/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as index 50c1d81..2a0ad3c 100644 --- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as +++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as @@ -218,60 +218,129 @@ package org.apache.flex.html.beads.layouts horizontalMargins[i] = { marginLeft: ml, marginRight: mr, halign: halign }; } - for (i = n - 1; i > flexChildIndex; i--) - { - child = contentView.getElementAt(i) as IUIBase; - margin = ValuesManager.valuesImpl.getValue(child, "margin"); - if (margin is Array) - { - if (margin.length == 1) - marginLeft = marginTop = marginRight = marginBottom = margin[0]; - else if (margin.length <= 3) - { - marginLeft = marginRight = margin[1]; - marginTop = marginBottom = margin[0]; - } - else if (margin.length == 4) - { - marginLeft = margin[3]; - marginBottom = margin[2]; - marginRight = margin[1]; - marginTop = margin[0]; - } - } - else if (margin == null) - { - marginLeft = ValuesManager.valuesImpl.getValue(child, "margin-left"); - marginTop = ValuesManager.valuesImpl.getValue(child, "margin-top"); - marginRight = ValuesManager.valuesImpl.getValue(child, "margin-right"); - marginBottom = ValuesManager.valuesImpl.getValue(child, "margin-bottom"); - } - else - { - marginLeft = marginTop = marginBottom = marginRight = margin; - } - mt = Number(marginTop); - if (isNaN(mt)) - mt = 0; - mb = Number(marginBottom); - if (isNaN(mb)) - mb = 0; - if (marginLeft == "auto") - ml = 0; - else - { - ml = Number(marginLeft); - if (isNaN(ml)) - ml = 0; - } - if (marginRight == "auto") - mr = 0; - else - { - mr = Number(marginRight); - if (isNaN(mr)) - mr = 0; - } + if (n > 0 && n > flexChildIndex) + { + for (i = n - 1; i > flexChildIndex; i--) + { + child = contentView.getElementAt(i) as IUIBase; + margin = ValuesManager.valuesImpl.getValue(child, "margin"); + if (margin is Array) + { + if (margin.length == 1) + marginLeft = marginTop = marginRight = marginBottom = margin[0]; + else if (margin.length <= 3) + { + marginLeft = marginRight = margin[1]; + marginTop = marginBottom = margin[0]; + } + else if (margin.length == 4) + { + marginLeft = margin[3]; + marginBottom = margin[2]; + marginRight = margin[1]; + marginTop = margin[0]; + } + } + else if (margin == null) + { + marginLeft = ValuesManager.valuesImpl.getValue(child, "margin-left"); + marginTop = ValuesManager.valuesImpl.getValue(child, "margin-top"); + marginRight = ValuesManager.valuesImpl.getValue(child, "margin-right"); + marginBottom = ValuesManager.valuesImpl.getValue(child, "margin-bottom"); + } + else + { + marginLeft = marginTop = marginBottom = marginRight = margin; + } + mt = Number(marginTop); + if (isNaN(mt)) + mt = 0; + mb = Number(marginBottom); + if (isNaN(mb)) + mb = 0; + if (marginLeft == "auto") + ml = 0; + else + { + ml = Number(marginLeft); + if (isNaN(ml)) + ml = 0; + } + if (marginRight == "auto") + mr = 0; + else + { + mr = Number(marginRight); + if (isNaN(mr)) + mr = 0; + } + child.x = ml; + if (child is ILayoutChild) + { + ilc = child as ILayoutChild; + if (!isNaN(ilc.percentWidth)) + ilc.setWidth(contentView.width * ilc.percentWidth / 100, true); + } + maxWidth = Math.max(maxWidth, ml + child.width + mr); + child.y = hh - child.height - mb; + hh -= child.height + mt + mb; + lastmt = mt; + halign = ValuesManager.valuesImpl.getValue(child, "horizontal-align"); + horizontalMargins[i] = { marginLeft: ml, marginRight: mr, halign: halign }; + } + + child = contentView.getElementAt(flexChildIndex) as IUIBase; + margin = ValuesManager.valuesImpl.getValue(child, "margin"); + if (margin is Array) + { + if (margin.length == 1) + marginLeft = marginTop = marginRight = marginBottom = margin[0]; + else if (margin.length <= 3) + { + marginLeft = marginRight = margin[1]; + marginTop = marginBottom = margin[0]; + } + else if (margin.length == 4) + { + marginLeft = margin[3]; + marginBottom = margin[2]; + marginRight = margin[1]; + marginTop = margin[0]; + } + } + else if (margin == null) + { + marginLeft = ValuesManager.valuesImpl.getValue(child, "margin-left"); + marginTop = ValuesManager.valuesImpl.getValue(child, "margin-top"); + marginRight = ValuesManager.valuesImpl.getValue(child, "margin-right"); + marginBottom = ValuesManager.valuesImpl.getValue(child, "margin-bottom"); + } + else + { + marginLeft = marginTop = marginBottom = marginRight = margin; + } + mt = Number(marginTop); + if (isNaN(mt)) + mt = 0; + mb = Number(marginBottom); + if (isNaN(mb)) + mb = 0; + if (marginLeft == "auto") + ml = 0; + else + { + ml = Number(marginLeft); + if (isNaN(ml)) + ml = 0; + } + if (marginRight == "auto") + mr = 0; + else + { + mr = Number(marginRight); + if (isNaN(mr)) + mr = 0; + } child.x = ml; if (child is ILayoutChild) { @@ -280,78 +349,12 @@ package org.apache.flex.html.beads.layouts ilc.setWidth(contentView.width * ilc.percentWidth / 100, true); } maxWidth = Math.max(maxWidth, ml + child.width + mr); - child.y = hh - child.height - mb; - hh -= child.height + mt + mb; - lastmt = mt; + child.y = yy + mt; + child.height = hh - yy - mb; halign = ValuesManager.valuesImpl.getValue(child, "horizontal-align"); - horizontalMargins[i] = { marginLeft: ml, marginRight: mr, halign: halign }; - } - - child = contentView.getElementAt(flexChildIndex) as IUIBase; - margin = ValuesManager.valuesImpl.getValue(child, "margin"); - if (margin is Array) - { - if (margin.length == 1) - marginLeft = marginTop = marginRight = marginBottom = margin[0]; - else if (margin.length <= 3) - { - marginLeft = marginRight = margin[1]; - marginTop = marginBottom = margin[0]; - } - else if (margin.length == 4) - { - marginLeft = margin[3]; - marginBottom = margin[2]; - marginRight = margin[1]; - marginTop = margin[0]; - } - } - else if (margin == null) - { - marginLeft = ValuesManager.valuesImpl.getValue(child, "margin-left"); - marginTop = ValuesManager.valuesImpl.getValue(child, "margin-top"); - marginRight = ValuesManager.valuesImpl.getValue(child, "margin-right"); - marginBottom = ValuesManager.valuesImpl.getValue(child, "margin-bottom"); + horizontalMargins[flexChildIndex] = { marginLeft: ml, marginRight: mr, halign: halign }; } - else - { - marginLeft = marginTop = marginBottom = marginRight = margin; - } - mt = Number(marginTop); - if (isNaN(mt)) - mt = 0; - mb = Number(marginBottom); - if (isNaN(mb)) - mb = 0; - if (marginLeft == "auto") - ml = 0; - else - { - ml = Number(marginLeft); - if (isNaN(ml)) - ml = 0; - } - if (marginRight == "auto") - mr = 0; - else - { - mr = Number(marginRight); - if (isNaN(mr)) - mr = 0; - } - child.x = ml; - if (child is ILayoutChild) - { - ilc = child as ILayoutChild; - if (!isNaN(ilc.percentWidth)) - ilc.setWidth(contentView.width * ilc.percentWidth / 100, true); - } - maxWidth = Math.max(maxWidth, ml + child.width + mr); - child.y = yy + mt; - child.height = hh - yy - mb; - halign = ValuesManager.valuesImpl.getValue(child, "horizontal-align"); - horizontalMargins[flexChildIndex] = { marginLeft: ml, marginRight: mr, halign: halign }; - + for (i = 0; i < n; i++) { var obj:Object = horizontalMargins[0]
