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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 centerContainerIfNeeded(containerLayoutObject); | 158 centerContainerIfNeeded(containerLayoutObject); |
159 } | 159 } |
160 | 160 |
161 HTMLElement* placeholderElement = inputElement()->placeholderElement(); | 161 HTMLElement* placeholderElement = inputElement()->placeholderElement(); |
162 if (LayoutBox* placeholderBox = placeholderElement ? placeholderElement->lay
outBox() : 0) { | 162 if (LayoutBox* placeholderBox = placeholderElement ? placeholderElement->lay
outBox() : 0) { |
163 LayoutSize innerEditorSize; | 163 LayoutSize innerEditorSize; |
164 | 164 |
165 if (innerEditorLayoutObject) | 165 if (innerEditorLayoutObject) |
166 innerEditorSize = innerEditorLayoutObject->size(); | 166 innerEditorSize = innerEditorLayoutObject->size(); |
167 placeholderBox->mutableStyleRef().setWidth(Length(innerEditorSize.width(
) - placeholderBox->borderAndPaddingWidth(), Fixed)); | 167 placeholderBox->mutableStyleRef().setWidth(Length(innerEditorSize.width(
) - placeholderBox->borderAndPaddingWidth(), Fixed)); |
168 placeholderBox->mutableStyleRef().setHeight(Length(innerEditorSize.heigh
t() - placeholderBox->borderAndPaddingHeight(), Fixed)); | |
169 bool neededLayout = placeholderBox->needsLayout(); | 168 bool neededLayout = placeholderBox->needsLayout(); |
170 placeholderBox->layoutIfNeeded(); | 169 placeholderBox->layoutIfNeeded(); |
171 LayoutPoint textOffset; | 170 LayoutPoint textOffset; |
172 if (innerEditorLayoutObject) | 171 if (innerEditorLayoutObject) |
173 textOffset = innerEditorLayoutObject->location(); | 172 textOffset = innerEditorLayoutObject->location(); |
174 if (editingViewPortElement() && editingViewPortElement()->layoutBox()) | 173 if (editingViewPortElement() && editingViewPortElement()->layoutBox()) |
175 textOffset += toLayoutSize(editingViewPortElement()->layoutBox()->lo
cation()); | 174 textOffset += toLayoutSize(editingViewPortElement()->layoutBox()->lo
cation()); |
176 if (containerLayoutObject) | 175 if (containerLayoutObject) |
177 textOffset += toLayoutSize(containerLayoutObject->location()); | 176 textOffset += toLayoutSize(containerLayoutObject->location()); |
| 177 if (innerEditorLayoutObject) { |
| 178 // We use inlineBlockBaseline() for innerEditor because it has no |
| 179 // inline boxes when we show the placeholder. |
| 180 int innerEditorBaseline = innerEditorLayoutObject->inlineBlockBaseli
ne(HorizontalLine); |
| 181 // We use firstLineBoxBaseline() for placeholder. |
| 182 // TODO(tkent): It's inconsistent with innerEditorBaseline. However |
| 183 // placeholderBox->inlineBlockBase() is unexpectedly larger. |
| 184 int placeholderBaseline = placeholderBox->firstLineBoxBaseline(); |
| 185 textOffset += LayoutSize(0, innerEditorBaseline - placeholderBaselin
e); |
| 186 } |
178 placeholderBox->setLocation(textOffset); | 187 placeholderBox->setLocation(textOffset); |
179 | 188 |
180 // The placeholder gets layout last, after the parent text control and i
ts other children, | 189 // The placeholder gets layout last, after the parent text control and i
ts other children, |
181 // so in order to get the correct overflow from the placeholder we need
to recompute it now. | 190 // so in order to get the correct overflow from the placeholder we need
to recompute it now. |
182 if (neededLayout) | 191 if (neededLayout) |
183 computeOverflow(clientLogicalBottom()); | 192 computeOverflow(clientLogicalBottom()); |
184 } | 193 } |
185 } | 194 } |
186 | 195 |
187 bool LayoutTextControlSingleLine::nodeAtPoint(HitTestResult& result, const HitTe
stLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAc
tion hitTestAction) | 196 bool LayoutTextControlSingleLine::nodeAtPoint(HitTestResult& result, const HitTe
stLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAc
tion hitTestAction) |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 if (innerEditorElement()) | 413 if (innerEditorElement()) |
405 innerEditorElement()->setScrollTop(newTop); | 414 innerEditorElement()->setScrollTop(newTop); |
406 } | 415 } |
407 | 416 |
408 HTMLInputElement* LayoutTextControlSingleLine::inputElement() const | 417 HTMLInputElement* LayoutTextControlSingleLine::inputElement() const |
409 { | 418 { |
410 return toHTMLInputElement(node()); | 419 return toHTMLInputElement(node()); |
411 } | 420 } |
412 | 421 |
413 } | 422 } |
OLD | NEW |