Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /** | 1 /** |
| 2 * Copyright (C) 2006, 2007, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2010 Apple Inc. All rights reserved. |
| 3 * (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) | 3 * (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) |
| 4 * Copyright (C) 2010 Google Inc. All rights reserved. | 4 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 5 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). | 5 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). |
| 6 * | 6 * |
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 37 #include "platform/fonts/SimpleFontData.h" | 37 #include "platform/fonts/SimpleFontData.h" |
| 38 | 38 |
| 39 namespace blink { | 39 namespace blink { |
| 40 | 40 |
| 41 using namespace HTMLNames; | 41 using namespace HTMLNames; |
| 42 | 42 |
| 43 RenderTextControlSingleLine::RenderTextControlSingleLine(HTMLInputElement* eleme nt) | 43 RenderTextControlSingleLine::RenderTextControlSingleLine(HTMLInputElement* eleme nt) |
| 44 : RenderTextControl(element) | 44 : RenderTextControl(element) |
| 45 , m_shouldDrawCapsLockIndicator(false) | 45 , m_shouldDrawCapsLockIndicator(false) |
| 46 , m_desiredInnerEditorLogicalHeight(-1) | 46 , m_desiredInnerEditorLogicalHeight(-1) |
| 47 , m_hasOverridenInnerEditorLogicalTop(false) | |
| 47 { | 48 { |
| 48 } | 49 } |
| 49 | 50 |
| 50 RenderTextControlSingleLine::~RenderTextControlSingleLine() | 51 RenderTextControlSingleLine::~RenderTextControlSingleLine() |
| 51 { | 52 { |
| 52 } | 53 } |
| 53 | 54 |
| 54 inline Element* RenderTextControlSingleLine::containerElement() const | 55 inline Element* RenderTextControlSingleLine::containerElement() const |
| 55 { | 56 { |
| 56 return inputElement()->userAgentShadowRoot()->getElementById(ShadowElementNa mes::textFieldContainer()); | 57 return inputElement()->userAgentShadowRoot()->getElementById(ShadowElementNa mes::textFieldContainer()); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 109 RenderBox* viewPortRenderer = editingViewPortElement() ? editingViewPortElem ent()->renderBox() : 0; | 110 RenderBox* viewPortRenderer = editingViewPortElement() ? editingViewPortElem ent()->renderBox() : 0; |
| 110 | 111 |
| 111 // To ensure consistency between layouts, we need to reset any conditionally overriden height. | 112 // To ensure consistency between layouts, we need to reset any conditionally overriden height. |
| 112 if (innerEditorRenderer && !innerEditorRenderer->style()->logicalHeight().is Auto()) { | 113 if (innerEditorRenderer && !innerEditorRenderer->style()->logicalHeight().is Auto()) { |
| 113 innerEditorRenderer->style()->setLogicalHeight(Length(Auto)); | 114 innerEditorRenderer->style()->setLogicalHeight(Length(Auto)); |
| 114 layoutScope.setNeedsLayout(innerEditorRenderer); | 115 layoutScope.setNeedsLayout(innerEditorRenderer); |
| 115 HTMLElement* placeholderElement = inputElement()->placeholderElement(); | 116 HTMLElement* placeholderElement = inputElement()->placeholderElement(); |
| 116 if (RenderBox* placeholderBox = placeholderElement ? placeholderElement- >renderBox() : 0) | 117 if (RenderBox* placeholderBox = placeholderElement ? placeholderElement- >renderBox() : 0) |
| 117 layoutScope.setNeedsLayout(placeholderBox); | 118 layoutScope.setNeedsLayout(placeholderBox); |
| 118 } | 119 } |
| 120 if (m_hasOverridenInnerEditorLogicalTop) { | |
| 121 layoutScope.setNeedsLayout(innerEditorRenderer); | |
| 122 m_hasOverridenInnerEditorLogicalTop = false; | |
| 123 } | |
| 119 if (viewPortRenderer && !viewPortRenderer->style()->logicalHeight().isAuto() ) { | 124 if (viewPortRenderer && !viewPortRenderer->style()->logicalHeight().isAuto() ) { |
| 120 viewPortRenderer->style()->setLogicalHeight(Length(Auto)); | 125 viewPortRenderer->style()->setLogicalHeight(Length(Auto)); |
| 121 layoutScope.setNeedsLayout(viewPortRenderer); | 126 layoutScope.setNeedsLayout(viewPortRenderer); |
| 122 } | 127 } |
| 123 | 128 |
| 124 RenderBlockFlow::layoutBlock(false); | 129 RenderBlockFlow::layoutBlock(false); |
| 125 | 130 |
| 126 Element* container = containerElement(); | 131 Element* container = containerElement(); |
| 127 RenderBox* containerRenderer = container ? container->renderBox() : 0; | 132 RenderBox* containerRenderer = container ? container->renderBox() : 0; |
| 128 | 133 |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 157 } | 162 } |
| 158 | 163 |
| 159 // If we need another layout pass, we have changed one of children's height so we need to relayout them. | 164 // If we need another layout pass, we have changed one of children's height so we need to relayout them. |
| 160 if (needsLayout()) | 165 if (needsLayout()) |
| 161 RenderBlockFlow::layoutBlock(true); | 166 RenderBlockFlow::layoutBlock(true); |
| 162 | 167 |
| 163 // Center the child block in the block progression direction (vertical cente ring for horizontal text fields). | 168 // Center the child block in the block progression direction (vertical cente ring for horizontal text fields). |
| 164 if (!container && innerEditorRenderer && innerEditorRenderer->height() != co ntentLogicalHeight()) { | 169 if (!container && innerEditorRenderer && innerEditorRenderer->height() != co ntentLogicalHeight()) { |
| 165 LayoutUnit logicalHeightDiff = innerEditorRenderer->logicalHeight() - co ntentLogicalHeight(); | 170 LayoutUnit logicalHeightDiff = innerEditorRenderer->logicalHeight() - co ntentLogicalHeight(); |
| 166 innerEditorRenderer->setLogicalTop(innerEditorRenderer->logicalTop() - ( logicalHeightDiff / 2 + layoutMod(logicalHeightDiff, 2))); | 171 innerEditorRenderer->setLogicalTop(innerEditorRenderer->logicalTop() - ( logicalHeightDiff / 2 + layoutMod(logicalHeightDiff, 2))); |
| 172 m_hasOverridenInnerEditorLogicalTop = true; | |
| 167 } else | 173 } else |
| 168 centerContainerIfNeeded(containerRenderer); | 174 centerContainerIfNeeded(containerRenderer); |
|
Julien - ping for review
2014/11/19 01:13:27
This also overrides the logical top under some con
| |
| 169 | 175 |
| 170 HTMLElement* placeholderElement = inputElement()->placeholderElement(); | 176 HTMLElement* placeholderElement = inputElement()->placeholderElement(); |
| 171 if (RenderBox* placeholderBox = placeholderElement ? placeholderElement->ren derBox() : 0) { | 177 if (RenderBox* placeholderBox = placeholderElement ? placeholderElement->ren derBox() : 0) { |
| 172 LayoutSize innerEditorSize; | 178 LayoutSize innerEditorSize; |
| 173 | 179 |
| 174 if (innerEditorRenderer) | 180 if (innerEditorRenderer) |
| 175 innerEditorSize = innerEditorRenderer->size(); | 181 innerEditorSize = innerEditorRenderer->size(); |
| 176 placeholderBox->style()->setWidth(Length(innerEditorSize.width() - place holderBox->borderAndPaddingWidth(), Fixed)); | 182 placeholderBox->style()->setWidth(Length(innerEditorSize.width() - place holderBox->borderAndPaddingWidth(), Fixed)); |
| 177 placeholderBox->style()->setHeight(Length(innerEditorSize.height() - pla ceholderBox->borderAndPaddingHeight(), Fixed)); | 183 placeholderBox->style()->setHeight(Length(innerEditorSize.height() - pla ceholderBox->borderAndPaddingHeight(), Fixed)); |
| 178 bool neededLayout = placeholderBox->needsLayout(); | 184 bool neededLayout = placeholderBox->needsLayout(); |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 412 if (innerEditorElement()) | 418 if (innerEditorElement()) |
| 413 innerEditorElement()->setScrollTop(newTop); | 419 innerEditorElement()->setScrollTop(newTop); |
| 414 } | 420 } |
| 415 | 421 |
| 416 HTMLInputElement* RenderTextControlSingleLine::inputElement() const | 422 HTMLInputElement* RenderTextControlSingleLine::inputElement() const |
| 417 { | 423 { |
| 418 return toHTMLInputElement(node()); | 424 return toHTMLInputElement(node()); |
| 419 } | 425 } |
| 420 | 426 |
| 421 } | 427 } |
| OLD | NEW |