Index: third_party/WebKit/Source/core/layout/LayoutButton.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutButton.cpp b/third_party/WebKit/Source/core/layout/LayoutButton.cpp |
index ab90e891c6fab34fe7215f8654920e8a1a4e1699..0f9b2cc8935b0df61871b0d87a932307f4396ce7 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutButton.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutButton.cpp |
@@ -25,7 +25,7 @@ namespace blink { |
using namespace HTMLNames; |
LayoutButton::LayoutButton(Element* element) |
- : LayoutFlexibleBox(element) |
+ : LayoutBlockFlow(element) |
, m_inner(nullptr) |
{ |
} |
@@ -40,7 +40,7 @@ void LayoutButton::addChild(LayoutObject* newChild, LayoutObject* beforeChild) |
// Create an anonymous block. |
ASSERT(!firstChild()); |
m_inner = createAnonymousBlock(style()->display()); |
- LayoutFlexibleBox::addChild(m_inner); |
+ LayoutBlockFlow::addChild(m_inner); |
} |
m_inner->addChild(newChild, beforeChild); |
@@ -49,13 +49,13 @@ void LayoutButton::addChild(LayoutObject* newChild, LayoutObject* beforeChild) |
void LayoutButton::removeChild(LayoutObject* oldChild) |
{ |
if (oldChild == m_inner || !m_inner) { |
- LayoutFlexibleBox::removeChild(oldChild); |
+ LayoutBlockFlow::removeChild(oldChild); |
m_inner = 0; |
} else if (oldChild->parent() == this) { |
// We aren't the inner node, but we're getting removed from the button, this |
// can happen with things like scrollable area resizer's. |
- LayoutFlexibleBox::removeChild(oldChild); |
+ LayoutBlockFlow::removeChild(oldChild); |
} else { |
m_inner->removeChild(oldChild); |
@@ -67,6 +67,7 @@ void LayoutButton::updateAnonymousChildStyle(const LayoutObject& child, Computed |
ASSERT(!m_inner || &child == m_inner); |
childStyle.setFlexGrow(1.0f); |
+ childStyle.setHeight(Length(0, FillAvailable)); |
// min-width: 0; is needed for correct shrinking. |
childStyle.setMinWidth(Length(0, Fixed)); |
// Use margin:auto instead of align-items:center to get safe centering, i.e. |
@@ -92,9 +93,9 @@ int LayoutButton::baselinePosition(FontBaseline baseline, bool firstLine, LineDi |
{ |
ASSERT(linePositionMode == PositionOnContainingLine); |
// We want to call the LayoutBlock version of firstLineBoxBaseline to |
- // avoid LayoutFlexibleBox synthesizing a baseline that we don't want. |
+ // avoid LayoutBlockFlow synthesizing a baseline that we don't want. |
// We use this check as a proxy for "are there any line boxes in this button" |
- if (!hasLineIfEmpty() && LayoutBlock::firstLineBoxBaseline() == -1) { |
+ if (!hasLineIfEmpty() && (!firstChild() || LayoutBlock::firstLineBoxBaseline() == -1)) { |
// To ensure that we have a consistent baseline when we have no children, |
// even when we have the anonymous LayoutBlock child, we calculate the |
// baseline for the empty case manually here. |
@@ -103,7 +104,7 @@ int LayoutButton::baselinePosition(FontBaseline baseline, bool firstLine, LineDi |
} |
return marginRight() + size().width() - borderLeft() - paddingLeft() - verticalScrollbarWidth(); |
} |
- return LayoutFlexibleBox::baselinePosition(baseline, firstLine, direction, linePositionMode); |
+ return LayoutBlockFlow::baselinePosition(baseline, firstLine, direction, linePositionMode); |
} |