Index: Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp |
=================================================================== |
--- Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp (revision 130950) |
+++ Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp (working copy) |
@@ -151,6 +151,20 @@ |
return child->isOutOfFlowPositioned() || child->style()->visibility() == COLLAPSE; |
} |
+static LayoutUnit contentWidthForChild(RenderBox* child) |
+{ |
+ if (child->hasOverrideWidth()) |
+ return child->overrideLogicalContentWidth(); |
+ return child->logicalWidth() - child->borderAndPaddingLogicalWidth(); |
+} |
+ |
+static LayoutUnit contentHeightForChild(RenderBox* child) |
+{ |
+ if (child->hasOverrideHeight()) |
+ return child->overrideLogicalContentHeight(); |
+ return child->logicalHeight() - child->borderAndPaddingLogicalHeight(); |
+} |
+ |
void RenderDeprecatedFlexibleBox::styleWillChange(StyleDifference diff, const RenderStyle* newStyle) |
{ |
RenderStyle* oldStyle = style(); |
@@ -538,7 +552,7 @@ |
if (allowedChildFlex(child, expanding, i)) { |
LayoutUnit spaceAdd = LayoutUnit(spaceAvailableThisPass * (child->style()->boxFlex() / totalFlex)); |
if (spaceAdd) { |
- child->setOverrideLogicalContentWidth(child->overrideLogicalContentWidth() + spaceAdd); |
+ child->setOverrideLogicalContentWidth(contentWidthForChild(child) + spaceAdd); |
flexingChildren = true; |
relayoutChildren = true; |
} |
@@ -555,7 +569,7 @@ |
LayoutUnit spaceAdd = groupRemainingSpace > 0 ? 1 : -1; |
for (RenderBox* child = iterator.first(); child && groupRemainingSpace; child = iterator.next()) { |
if (allowedChildFlex(child, expanding, i)) { |
- child->setOverrideLogicalContentWidth(child->overrideLogicalContentWidth() + spaceAdd); |
+ child->setOverrideLogicalContentWidth(contentWidthForChild(child) + spaceAdd); |
flexingChildren = true; |
relayoutChildren = true; |
remainingSpace -= spaceAdd; |
@@ -789,7 +803,7 @@ |
if (allowedChildFlex(child, expanding, i)) { |
LayoutUnit spaceAdd = static_cast<LayoutUnit>(spaceAvailableThisPass * (child->style()->boxFlex() / totalFlex)); |
if (spaceAdd) { |
- child->setOverrideLogicalContentHeight(child->overrideLogicalContentHeight() + spaceAdd); |
+ child->setOverrideLogicalContentHeight(contentHeightForChild(child) + spaceAdd); |
flexingChildren = true; |
relayoutChildren = true; |
} |
@@ -806,7 +820,7 @@ |
LayoutUnit spaceAdd = groupRemainingSpace > 0 ? 1 : -1; |
for (RenderBox* child = iterator.first(); child && groupRemainingSpace; child = iterator.next()) { |
if (allowedChildFlex(child, expanding, i)) { |
- child->setOverrideLogicalContentHeight(child->overrideLogicalContentHeight() + spaceAdd); |
+ child->setOverrideLogicalContentHeight(contentHeightForChild(child) + spaceAdd); |
flexingChildren = true; |
relayoutChildren = true; |
remainingSpace -= spaceAdd; |
@@ -1019,7 +1033,7 @@ |
if (isHorizontal()) { |
// FIXME: For now just handle fixed values. |
LayoutUnit maxWidth = MAX_LAYOUT_UNIT; |
- LayoutUnit width = child->overrideLogicalContentWidth(); |
+ LayoutUnit width = contentWidthForChild(child); |
if (!child->style()->maxWidth().isUndefined() && child->style()->maxWidth().isFixed()) |
maxWidth = child->style()->maxWidth().value(); |
else if (child->style()->maxWidth().type() == Intrinsic) |
@@ -1032,7 +1046,7 @@ |
} else { |
// FIXME: For now just handle fixed values. |
LayoutUnit maxHeight = MAX_LAYOUT_UNIT; |
- LayoutUnit height = child->overrideLogicalContentHeight(); |
+ LayoutUnit height = contentHeightForChild(child); |
if (!child->style()->maxHeight().isUndefined() && child->style()->maxHeight().isFixed()) |
maxHeight = child->style()->maxHeight().value(); |
if (maxHeight == MAX_LAYOUT_UNIT) |
@@ -1044,7 +1058,7 @@ |
// FIXME: For now just handle fixed values. |
if (isHorizontal()) { |
LayoutUnit minWidth = child->minPreferredLogicalWidth(); |
- LayoutUnit width = child->overrideLogicalContentWidth(); |
+ LayoutUnit width = contentWidthForChild(child); |
if (child->style()->minWidth().isFixed()) |
minWidth = child->style()->minWidth().value(); |
else if (child->style()->minWidth().type() == Intrinsic) |
@@ -1060,7 +1074,7 @@ |
Length minHeight = child->style()->minHeight(); |
if (minHeight.isFixed() || minHeight.isAuto()) { |
LayoutUnit minHeight = child->style()->minHeight().value(); |
- LayoutUnit height = child->overrideLogicalContentHeight(); |
+ LayoutUnit height = contentHeightForChild(child); |
LayoutUnit allowedShrinkage = min<LayoutUnit>(0, minHeight - height); |
return allowedShrinkage; |
} |