Chromium Code Reviews| Index: Source/core/rendering/RenderTextControlSingleLine.cpp |
| diff --git a/Source/core/rendering/RenderTextControlSingleLine.cpp b/Source/core/rendering/RenderTextControlSingleLine.cpp |
| index 8d2c0453ee84921291a6775c16ee1eaa2e030c39..ca3f408153ff500429333952cf60bebd880d25ad 100644 |
| --- a/Source/core/rendering/RenderTextControlSingleLine.cpp |
| +++ b/Source/core/rendering/RenderTextControlSingleLine.cpp |
| @@ -44,6 +44,7 @@ RenderTextControlSingleLine::RenderTextControlSingleLine(HTMLInputElement* eleme |
| : RenderTextControl(element) |
| , m_shouldDrawCapsLockIndicator(false) |
| , m_desiredInnerEditorLogicalHeight(-1) |
| + , m_hasOverridenInnerEditorLogicalTop(false) |
| { |
| } |
| @@ -116,6 +117,10 @@ void RenderTextControlSingleLine::layout() |
| if (RenderBox* placeholderBox = placeholderElement ? placeholderElement->renderBox() : 0) |
| layoutScope.setNeedsLayout(placeholderBox); |
| } |
| + if (m_hasOverridenInnerEditorLogicalTop) { |
| + layoutScope.setNeedsLayout(innerEditorRenderer); |
| + m_hasOverridenInnerEditorLogicalTop = false; |
| + } |
| if (viewPortRenderer && !viewPortRenderer->style()->logicalHeight().isAuto()) { |
| viewPortRenderer->style()->setLogicalHeight(Length(Auto)); |
| layoutScope.setNeedsLayout(viewPortRenderer); |
| @@ -164,6 +169,7 @@ void RenderTextControlSingleLine::layout() |
| if (!container && innerEditorRenderer && innerEditorRenderer->height() != contentLogicalHeight()) { |
| LayoutUnit logicalHeightDiff = innerEditorRenderer->logicalHeight() - contentLogicalHeight(); |
| innerEditorRenderer->setLogicalTop(innerEditorRenderer->logicalTop() - (logicalHeightDiff / 2 + layoutMod(logicalHeightDiff, 2))); |
| + m_hasOverridenInnerEditorLogicalTop = true; |
| } else |
| centerContainerIfNeeded(containerRenderer); |
|
Julien - ping for review
2014/11/19 01:13:27
This also overrides the logical top under some con
|