Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: Source/core/layout/LayoutTextControl.cpp

Issue 922423002: Move rendering/RenderTextControl* to layout/LayoutTextControl* (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/layout/LayoutTextControl.h ('k') | Source/core/layout/LayoutTextControlMultiLine.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /** 1 /**
2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007 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 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details. 13 * Library General Public License for more details.
14 * 14 *
15 * You should have received a copy of the GNU Library General Public License 15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to 16 * along with this library; see the file COPYING.LIB. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA. 18 * Boston, MA 02110-1301, USA.
19 * 19 *
20 */ 20 */
21 21
22 #include "config.h" 22 #include "config.h"
23 #include "core/rendering/RenderTextControl.h" 23 #include "core/layout/LayoutTextControl.h"
24 24
25 #include "core/html/HTMLTextFormControlElement.h" 25 #include "core/html/HTMLTextFormControlElement.h"
26 #include "core/layout/HitTestResult.h" 26 #include "core/layout/HitTestResult.h"
27 #include "core/layout/LayoutTheme.h" 27 #include "core/layout/LayoutTheme.h"
28 #include "core/layout/TextRunConstructor.h" 28 #include "core/layout/TextRunConstructor.h"
29 #include "platform/scroll/ScrollbarTheme.h" 29 #include "platform/scroll/ScrollbarTheme.h"
30 #include "wtf/unicode/CharacterNames.h" 30 #include "wtf/unicode/CharacterNames.h"
31 31
32 namespace blink { 32 namespace blink {
33 33
34 RenderTextControl::RenderTextControl(HTMLTextFormControlElement* element) 34 LayoutTextControl::LayoutTextControl(HTMLTextFormControlElement* element)
35 : RenderBlockFlow(element) 35 : RenderBlockFlow(element)
36 { 36 {
37 ASSERT(element); 37 ASSERT(element);
38 } 38 }
39 39
40 RenderTextControl::~RenderTextControl() 40 LayoutTextControl::~LayoutTextControl()
41 { 41 {
42 } 42 }
43 43
44 HTMLTextFormControlElement* RenderTextControl::textFormControlElement() const 44 HTMLTextFormControlElement* LayoutTextControl::textFormControlElement() const
45 { 45 {
46 return toHTMLTextFormControlElement(node()); 46 return toHTMLTextFormControlElement(node());
47 } 47 }
48 48
49 HTMLElement* RenderTextControl::innerEditorElement() const 49 HTMLElement* LayoutTextControl::innerEditorElement() const
50 { 50 {
51 return textFormControlElement()->innerEditorElement(); 51 return textFormControlElement()->innerEditorElement();
52 } 52 }
53 53
54 void RenderTextControl::addChild(LayoutObject* newChild, LayoutObject* beforeChi ld) 54 void LayoutTextControl::addChild(LayoutObject* newChild, LayoutObject* beforeChi ld)
55 { 55 {
56 // FIXME: This is a terrible hack to get the caret over the placeholder text since it'll 56 // FIXME: This is a terrible hack to get the caret over the placeholder text since it'll
57 // make us paint the placeholder first. (See https://trac.webkit.org/changes et/118733) 57 // make us paint the placeholder first. (See https://trac.webkit.org/changes et/118733)
58 Node* node = newChild->node(); 58 Node* node = newChild->node();
59 if (node && node->isElementNode() && toElement(node)->shadowPseudoId() == "- webkit-input-placeholder") 59 if (node && node->isElementNode() && toElement(node)->shadowPseudoId() == "- webkit-input-placeholder")
60 RenderBlockFlow::addChild(newChild, firstChild()); 60 RenderBlockFlow::addChild(newChild, firstChild());
61 else 61 else
62 RenderBlockFlow::addChild(newChild, beforeChild); 62 RenderBlockFlow::addChild(newChild, beforeChild);
63 } 63 }
64 64
65 void RenderTextControl::styleDidChange(StyleDifference diff, const LayoutStyle* oldStyle) 65 void LayoutTextControl::styleDidChange(StyleDifference diff, const LayoutStyle* oldStyle)
66 { 66 {
67 RenderBlockFlow::styleDidChange(diff, oldStyle); 67 RenderBlockFlow::styleDidChange(diff, oldStyle);
68 Element* innerEditor = innerEditorElement(); 68 Element* innerEditor = innerEditorElement();
69 if (!innerEditor) 69 if (!innerEditor)
70 return; 70 return;
71 RenderBlock* innerEditorRenderer = toRenderBlock(innerEditor->renderer()); 71 RenderBlock* innerEditorRenderer = toRenderBlock(innerEditor->renderer());
72 if (innerEditorRenderer) { 72 if (innerEditorRenderer) {
73 // We may have set the width and the height in the old style in layout() . 73 // We may have set the width and the height in the old style in layout() .
74 // Reset them now to avoid getting a spurious layout hint. 74 // Reset them now to avoid getting a spurious layout hint.
75 innerEditorRenderer->style()->setHeight(Length()); 75 innerEditorRenderer->style()->setHeight(Length());
76 innerEditorRenderer->style()->setWidth(Length()); 76 innerEditorRenderer->style()->setWidth(Length());
77 innerEditorRenderer->setStyle(createInnerEditorStyle(styleRef())); 77 innerEditorRenderer->setStyle(createInnerEditorStyle(styleRef()));
78 innerEditor->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonFo rTracing::create(StyleChangeReason::Control)); 78 innerEditor->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonFo rTracing::create(StyleChangeReason::Control));
79 } 79 }
80 textFormControlElement()->updatePlaceholderVisibility(false); 80 textFormControlElement()->updatePlaceholderVisibility(false);
81 } 81 }
82 82
83 static inline void updateUserModifyProperty(HTMLTextFormControlElement& node, La youtStyle& style) 83 static inline void updateUserModifyProperty(HTMLTextFormControlElement& node, La youtStyle& style)
84 { 84 {
85 style.setUserModify(node.isDisabledOrReadOnly() ? READ_ONLY : READ_WRITE_PLA INTEXT_ONLY); 85 style.setUserModify(node.isDisabledOrReadOnly() ? READ_ONLY : READ_WRITE_PLA INTEXT_ONLY);
86 } 86 }
87 87
88 void RenderTextControl::adjustInnerEditorStyle(LayoutStyle& textBlockStyle) cons t 88 void LayoutTextControl::adjustInnerEditorStyle(LayoutStyle& textBlockStyle) cons t
89 { 89 {
90 // The inner block, if present, always has its direction set to LTR, 90 // The inner block, if present, always has its direction set to LTR,
91 // so we need to inherit the direction and unicode-bidi style from the eleme nt. 91 // so we need to inherit the direction and unicode-bidi style from the eleme nt.
92 textBlockStyle.setDirection(style()->direction()); 92 textBlockStyle.setDirection(style()->direction());
93 textBlockStyle.setUnicodeBidi(style()->unicodeBidi()); 93 textBlockStyle.setUnicodeBidi(style()->unicodeBidi());
94 94
95 updateUserModifyProperty(*textFormControlElement(), textBlockStyle); 95 updateUserModifyProperty(*textFormControlElement(), textBlockStyle);
96 } 96 }
97 97
98 int RenderTextControl::textBlockLogicalHeight() const 98 int LayoutTextControl::textBlockLogicalHeight() const
99 { 99 {
100 return logicalHeight() - borderAndPaddingLogicalHeight(); 100 return logicalHeight() - borderAndPaddingLogicalHeight();
101 } 101 }
102 102
103 int RenderTextControl::textBlockLogicalWidth() const 103 int LayoutTextControl::textBlockLogicalWidth() const
104 { 104 {
105 Element* innerEditor = innerEditorElement(); 105 Element* innerEditor = innerEditorElement();
106 ASSERT(innerEditor); 106 ASSERT(innerEditor);
107 107
108 LayoutUnit unitWidth = logicalWidth() - borderAndPaddingLogicalWidth(); 108 LayoutUnit unitWidth = logicalWidth() - borderAndPaddingLogicalWidth();
109 if (innerEditor->renderer()) 109 if (innerEditor->renderer())
110 unitWidth -= innerEditor->renderBox()->paddingStart() + innerEditor->ren derBox()->paddingEnd(); 110 unitWidth -= innerEditor->renderBox()->paddingStart() + innerEditor->ren derBox()->paddingEnd();
111 111
112 return unitWidth; 112 return unitWidth;
113 } 113 }
114 114
115 void RenderTextControl::updateFromElement() 115 void LayoutTextControl::updateFromElement()
116 { 116 {
117 Element* innerEditor = innerEditorElement(); 117 Element* innerEditor = innerEditorElement();
118 if (innerEditor && innerEditor->renderer()) 118 if (innerEditor && innerEditor->renderer())
119 updateUserModifyProperty(*textFormControlElement(), innerEditor->rendere r()->mutableStyleRef()); 119 updateUserModifyProperty(*textFormControlElement(), innerEditor->rendere r()->mutableStyleRef());
120 } 120 }
121 121
122 int RenderTextControl::scrollbarThickness() const 122 int LayoutTextControl::scrollbarThickness() const
123 { 123 {
124 // FIXME: We should get the size of the scrollbar from the LayoutTheme inste ad. 124 // FIXME: We should get the size of the scrollbar from the LayoutTheme inste ad.
125 return ScrollbarTheme::theme()->scrollbarThickness(); 125 return ScrollbarTheme::theme()->scrollbarThickness();
126 } 126 }
127 127
128 void RenderTextControl::computeLogicalHeight(LayoutUnit logicalHeight, LayoutUni t logicalTop, LogicalExtentComputedValues& computedValues) const 128 void LayoutTextControl::computeLogicalHeight(LayoutUnit logicalHeight, LayoutUni t logicalTop, LogicalExtentComputedValues& computedValues) const
129 { 129 {
130 HTMLElement* innerEditor = innerEditorElement(); 130 HTMLElement* innerEditor = innerEditorElement();
131 ASSERT(innerEditor); 131 ASSERT(innerEditor);
132 if (RenderBox* innerEditorBox = innerEditor->renderBox()) { 132 if (RenderBox* innerEditorBox = innerEditor->renderBox()) {
133 LayoutUnit nonContentHeight = innerEditorBox->borderAndPaddingHeight() + innerEditorBox->marginHeight(); 133 LayoutUnit nonContentHeight = innerEditorBox->borderAndPaddingHeight() + innerEditorBox->marginHeight();
134 logicalHeight = computeControlLogicalHeight(innerEditorBox->lineHeight(t rue, HorizontalLine, PositionOfInteriorLineBoxes), nonContentHeight); 134 logicalHeight = computeControlLogicalHeight(innerEditorBox->lineHeight(t rue, HorizontalLine, PositionOfInteriorLineBoxes), nonContentHeight);
135 135
136 // We are able to have a horizontal scrollbar if the overflow style is s croll, or if its auto and there's no word wrap. 136 // We are able to have a horizontal scrollbar if the overflow style is s croll, or if its auto and there's no word wrap.
137 if ((isHorizontalWritingMode() && (style()->overflowX() == OSCROLL || ( style()->overflowX() == OAUTO && innerEditor->renderer()->style()->overflowWrap( ) == NormalOverflowWrap))) 137 if ((isHorizontalWritingMode() && (style()->overflowX() == OSCROLL || ( style()->overflowX() == OAUTO && innerEditor->renderer()->style()->overflowWrap( ) == NormalOverflowWrap)))
138 || (!isHorizontalWritingMode() && (style()->overflowY() == OSCROLL | | (style()->overflowY() == OAUTO && innerEditor->renderer()->style()->overflowW rap() == NormalOverflowWrap)))) 138 || (!isHorizontalWritingMode() && (style()->overflowY() == OSCROLL | | (style()->overflowY() == OAUTO && innerEditor->renderer()->style()->overflowW rap() == NormalOverflowWrap))))
139 logicalHeight += scrollbarThickness(); 139 logicalHeight += scrollbarThickness();
140 140
141 // FIXME: The logical height of the inner text box should have been adde d before calling computeLogicalHeight to 141 // FIXME: The logical height of the inner text box should have been adde d before calling computeLogicalHeight to
142 // avoid this hack. 142 // avoid this hack.
143 setIntrinsicContentLogicalHeight(logicalHeight); 143 setIntrinsicContentLogicalHeight(logicalHeight);
144 144
145 logicalHeight += borderAndPaddingHeight(); 145 logicalHeight += borderAndPaddingHeight();
146 } 146 }
147 147
148 RenderBox::computeLogicalHeight(logicalHeight, logicalTop, computedValues); 148 RenderBox::computeLogicalHeight(logicalHeight, logicalTop, computedValues);
149 } 149 }
150 150
151 void RenderTextControl::hitInnerEditorElement(HitTestResult& result, const Layou tPoint& pointInContainer, const LayoutPoint& accumulatedOffset) 151 void LayoutTextControl::hitInnerEditorElement(HitTestResult& result, const Layou tPoint& pointInContainer, const LayoutPoint& accumulatedOffset)
152 { 152 {
153 HTMLElement* innerEditor = innerEditorElement(); 153 HTMLElement* innerEditor = innerEditorElement();
154 if (!innerEditor->renderer()) 154 if (!innerEditor->renderer())
155 return; 155 return;
156 156
157 LayoutPoint adjustedLocation = accumulatedOffset + location(); 157 LayoutPoint adjustedLocation = accumulatedOffset + location();
158 LayoutPoint localPoint = pointInContainer - toLayoutSize(adjustedLocation + innerEditor->renderBox()->location()); 158 LayoutPoint localPoint = pointInContainer - toLayoutSize(adjustedLocation + innerEditor->renderBox()->location());
159 if (hasOverflowClip()) 159 if (hasOverflowClip())
160 localPoint += scrolledContentOffset(); 160 localPoint += scrolledContentOffset();
161 result.setInnerNode(innerEditor); 161 result.setInnerNode(innerEditor);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 "#HeadLineA", 198 "#HeadLineA",
199 "#PCMyungjo", 199 "#PCMyungjo",
200 "#PilGi", 200 "#PilGi",
201 }; 201 };
202 202
203 // For font families where any of the fonts don't have a valid entry in the OS/2 table 203 // For font families where any of the fonts don't have a valid entry in the OS/2 table
204 // for avgCharWidth, fallback to the legacy webkit behavior of getting the avgCh arWidth 204 // for avgCharWidth, fallback to the legacy webkit behavior of getting the avgCh arWidth
205 // from the width of a '0'. This only seems to apply to a fixed number of Mac fo nts, 205 // from the width of a '0'. This only seems to apply to a fixed number of Mac fo nts,
206 // but, in order to get similar rendering across platforms, we do this check for 206 // but, in order to get similar rendering across platforms, we do this check for
207 // all platforms. 207 // all platforms.
208 bool RenderTextControl::hasValidAvgCharWidth(AtomicString family) 208 bool LayoutTextControl::hasValidAvgCharWidth(AtomicString family)
209 { 209 {
210 static HashSet<AtomicString>* fontFamiliesWithInvalidCharWidthMap = 0; 210 static HashSet<AtomicString>* fontFamiliesWithInvalidCharWidthMap = 0;
211 211
212 if (family.isEmpty()) 212 if (family.isEmpty())
213 return false; 213 return false;
214 214
215 if (!fontFamiliesWithInvalidCharWidthMap) { 215 if (!fontFamiliesWithInvalidCharWidthMap) {
216 fontFamiliesWithInvalidCharWidthMap = new HashSet<AtomicString>; 216 fontFamiliesWithInvalidCharWidthMap = new HashSet<AtomicString>;
217 217
218 for (size_t i = 0; i < WTF_ARRAY_LENGTH(fontFamiliesWithInvalidCharWidth ); ++i) 218 for (size_t i = 0; i < WTF_ARRAY_LENGTH(fontFamiliesWithInvalidCharWidth ); ++i)
219 fontFamiliesWithInvalidCharWidthMap->add(AtomicString(fontFamiliesWi thInvalidCharWidth[i])); 219 fontFamiliesWithInvalidCharWidthMap->add(AtomicString(fontFamiliesWi thInvalidCharWidth[i]));
220 } 220 }
221 221
222 return !fontFamiliesWithInvalidCharWidthMap->contains(family); 222 return !fontFamiliesWithInvalidCharWidthMap->contains(family);
223 } 223 }
224 224
225 float RenderTextControl::getAvgCharWidth(AtomicString family) 225 float LayoutTextControl::getAvgCharWidth(AtomicString family)
226 { 226 {
227 if (hasValidAvgCharWidth(family)) 227 if (hasValidAvgCharWidth(family))
228 return roundf(style()->font().primaryFont()->avgCharWidth()); 228 return roundf(style()->font().primaryFont()->avgCharWidth());
229 229
230 const UChar ch = '0'; 230 const UChar ch = '0';
231 const String str = String(&ch, 1); 231 const String str = String(&ch, 1);
232 const Font& font = style()->font(); 232 const Font& font = style()->font();
233 TextRun textRun = constructTextRun(this, font, str, styleRef(), TextRun::All owTrailingExpansion); 233 TextRun textRun = constructTextRun(this, font, str, styleRef(), TextRun::All owTrailingExpansion);
234 return font.width(textRun); 234 return font.width(textRun);
235 } 235 }
236 236
237 float RenderTextControl::scaleEmToUnits(int x) const 237 float LayoutTextControl::scaleEmToUnits(int x) const
238 { 238 {
239 // This matches the unitsPerEm value for MS Shell Dlg and Courier New from t he "head" font table. 239 // This matches the unitsPerEm value for MS Shell Dlg and Courier New from t he "head" font table.
240 float unitsPerEm = 2048.0f; 240 float unitsPerEm = 2048.0f;
241 return roundf(style()->font().fontDescription().computedSize() * x / unitsPe rEm); 241 return roundf(style()->font().fontDescription().computedSize() * x / unitsPe rEm);
242 } 242 }
243 243
244 void RenderTextControl::computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidt h, LayoutUnit& maxLogicalWidth) const 244 void LayoutTextControl::computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidt h, LayoutUnit& maxLogicalWidth) const
245 { 245 {
246 // Use average character width. Matches IE. 246 // Use average character width. Matches IE.
247 AtomicString family = style()->font().fontDescription().family().family(); 247 AtomicString family = style()->font().fontDescription().family().family();
248 maxLogicalWidth = preferredContentLogicalWidth(const_cast<RenderTextControl* >(this)->getAvgCharWidth(family)); 248 maxLogicalWidth = preferredContentLogicalWidth(const_cast<LayoutTextControl* >(this)->getAvgCharWidth(family));
249 if (RenderBox* innerEditorRenderBox = innerEditorElement()->renderBox()) 249 if (RenderBox* innerEditorRenderBox = innerEditorElement()->renderBox())
250 maxLogicalWidth += innerEditorRenderBox->paddingStart() + innerEditorRen derBox->paddingEnd(); 250 maxLogicalWidth += innerEditorRenderBox->paddingStart() + innerEditorRen derBox->paddingEnd();
251 if (!style()->logicalWidth().isPercent()) 251 if (!style()->logicalWidth().isPercent())
252 minLogicalWidth = maxLogicalWidth; 252 minLogicalWidth = maxLogicalWidth;
253 } 253 }
254 254
255 void RenderTextControl::computePreferredLogicalWidths() 255 void LayoutTextControl::computePreferredLogicalWidths()
256 { 256 {
257 ASSERT(preferredLogicalWidthsDirty()); 257 ASSERT(preferredLogicalWidthsDirty());
258 258
259 m_minPreferredLogicalWidth = 0; 259 m_minPreferredLogicalWidth = 0;
260 m_maxPreferredLogicalWidth = 0; 260 m_maxPreferredLogicalWidth = 0;
261 const LayoutStyle& styleToUse = styleRef(); 261 const LayoutStyle& styleToUse = styleRef();
262 262
263 if (styleToUse.logicalWidth().isFixed() && styleToUse.logicalWidth().value() >= 0) 263 if (styleToUse.logicalWidth().isFixed() && styleToUse.logicalWidth().value() >= 0)
264 m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = adjustContentB oxLogicalWidthForBoxSizing(styleToUse.logicalWidth().value()); 264 m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = adjustContentB oxLogicalWidthForBoxSizing(styleToUse.logicalWidth().value());
265 else 265 else
(...skipping 10 matching lines...) Expand all
276 } 276 }
277 277
278 LayoutUnit toAdd = borderAndPaddingLogicalWidth(); 278 LayoutUnit toAdd = borderAndPaddingLogicalWidth();
279 279
280 m_minPreferredLogicalWidth += toAdd; 280 m_minPreferredLogicalWidth += toAdd;
281 m_maxPreferredLogicalWidth += toAdd; 281 m_maxPreferredLogicalWidth += toAdd;
282 282
283 clearPreferredLogicalWidthsDirty(); 283 clearPreferredLogicalWidthsDirty();
284 } 284 }
285 285
286 void RenderTextControl::addFocusRingRects(Vector<LayoutRect>& rects, const Layou tPoint& additionalOffset) const 286 void LayoutTextControl::addFocusRingRects(Vector<LayoutRect>& rects, const Layou tPoint& additionalOffset) const
287 { 287 {
288 if (!size().isEmpty()) 288 if (!size().isEmpty())
289 rects.append(LayoutRect(additionalOffset, size())); 289 rects.append(LayoutRect(additionalOffset, size()));
290 } 290 }
291 291
292 LayoutObject* RenderTextControl::layoutSpecialExcludedChild(bool relayoutChildre n, SubtreeLayoutScope& layoutScope) 292 LayoutObject* LayoutTextControl::layoutSpecialExcludedChild(bool relayoutChildre n, SubtreeLayoutScope& layoutScope)
293 { 293 {
294 HTMLElement* placeholder = toHTMLTextFormControlElement(node())->placeholder Element(); 294 HTMLElement* placeholder = toHTMLTextFormControlElement(node())->placeholder Element();
295 LayoutObject* placeholderRenderer = placeholder ? placeholder->renderer() : 0; 295 LayoutObject* placeholderRenderer = placeholder ? placeholder->renderer() : 0;
296 if (!placeholderRenderer) 296 if (!placeholderRenderer)
297 return 0; 297 return 0;
298 if (relayoutChildren) 298 if (relayoutChildren)
299 layoutScope.setChildNeedsLayout(placeholderRenderer); 299 layoutScope.setChildNeedsLayout(placeholderRenderer);
300 return placeholderRenderer; 300 return placeholderRenderer;
301 } 301 }
302 302
303 } // namespace blink 303 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutTextControl.h ('k') | Source/core/layout/LayoutTextControlMultiLine.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698