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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutTextControlSingleLine.cpp

Issue 1915353003: INPUT textfield: Do not remove line-height of innerEditor if we don't need to remove it. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 7 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
« no previous file with comments | « third_party/WebKit/LayoutTests/fast/forms/text/text-lineheight-centering-expected.html ('k') | no next file » | 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, 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 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 PassRefPtr<ComputedStyle> LayoutTextControlSingleLine::createInnerEditorStyle(co nst ComputedStyle& startStyle) const 266 PassRefPtr<ComputedStyle> LayoutTextControlSingleLine::createInnerEditorStyle(co nst ComputedStyle& startStyle) const
267 { 267 {
268 RefPtr<ComputedStyle> textBlockStyle = ComputedStyle::create(); 268 RefPtr<ComputedStyle> textBlockStyle = ComputedStyle::create();
269 textBlockStyle->inheritFrom(startStyle); 269 textBlockStyle->inheritFrom(startStyle);
270 adjustInnerEditorStyle(*textBlockStyle); 270 adjustInnerEditorStyle(*textBlockStyle);
271 271
272 textBlockStyle->setWhiteSpace(PRE); 272 textBlockStyle->setWhiteSpace(PRE);
273 textBlockStyle->setOverflowWrap(NormalOverflowWrap); 273 textBlockStyle->setOverflowWrap(NormalOverflowWrap);
274 textBlockStyle->setTextOverflow(textShouldBeTruncated() ? TextOverflowEllips is : TextOverflowClip); 274 textBlockStyle->setTextOverflow(textShouldBeTruncated() ? TextOverflowEllips is : TextOverflowClip);
275 275
276 int computedLineHeight = lineHeight(true, HorizontalLine, PositionOfInterior LineBoxes);
276 // Do not allow line-height to be smaller than our default. 277 // Do not allow line-height to be smaller than our default.
277 if (textBlockStyle->fontSize() >= lineHeight(true, HorizontalLine, PositionO fInteriorLineBoxes) || !startStyle.logicalHeight().isIntrinsicOrAuto()) 278 if (textBlockStyle->fontSize() >= computedLineHeight)
279 textBlockStyle->setLineHeight(ComputedStyle::initialLineHeight());
280
281 // We'd like to remove line-height if it's unnecessary because
282 // overflow:scroll clips editing text by line-height.
283 Length logicalHeight = startStyle.logicalHeight();
284 // Here, we remove line-height if the INPUT fixed height is taller than the
285 // line-height. It's not the precise condition because logicalHeight
286 // includes border and padding if box-sizing:border-box, and there are cases
287 // in which we don't want to remove line-height with percent or calculated
288 // length.
289 // TODO(tkent): This should be done during layout.
290 if (logicalHeight.hasPercent() || (logicalHeight.isFixed() && logicalHeight. getFloatValue() > computedLineHeight))
278 textBlockStyle->setLineHeight(ComputedStyle::initialLineHeight()); 291 textBlockStyle->setLineHeight(ComputedStyle::initialLineHeight());
279 292
280 textBlockStyle->setDisplay(BLOCK); 293 textBlockStyle->setDisplay(BLOCK);
281 textBlockStyle->setUnique(); 294 textBlockStyle->setUnique();
282 295
283 if (inputElement()->shouldRevealPassword()) 296 if (inputElement()->shouldRevealPassword())
284 textBlockStyle->setTextSecurity(TSNONE); 297 textBlockStyle->setTextSecurity(TSNONE);
285 298
286 textBlockStyle->setOverflowX(OverflowScroll); 299 textBlockStyle->setOverflowX(OverflowScroll);
300 // overflow-y:visible doesn't work because overflow-x:scroll makes a layer.
287 textBlockStyle->setOverflowY(OverflowScroll); 301 textBlockStyle->setOverflowY(OverflowScroll);
288 RefPtr<ComputedStyle> noScrollbarStyle = ComputedStyle::create(); 302 RefPtr<ComputedStyle> noScrollbarStyle = ComputedStyle::create();
289 noScrollbarStyle->setStyleType(PseudoIdScrollbar); 303 noScrollbarStyle->setStyleType(PseudoIdScrollbar);
290 noScrollbarStyle->setDisplay(NONE); 304 noScrollbarStyle->setDisplay(NONE);
291 textBlockStyle->addCachedPseudoStyle(noScrollbarStyle); 305 textBlockStyle->addCachedPseudoStyle(noScrollbarStyle);
292 textBlockStyle->setHasPseudoStyle(PseudoIdScrollbar); 306 textBlockStyle->setHasPseudoStyle(PseudoIdScrollbar);
293 307
294 return textBlockStyle.release(); 308 return textBlockStyle.release();
295 } 309 }
296 310
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 // inner-editor element overflows the INPUT box intentionally, however it 376 // inner-editor element overflows the INPUT box intentionally, however it
363 // shouldn't affect outside of the INPUT box. So we ignore child overflow. 377 // shouldn't affect outside of the INPUT box. So we ignore child overflow.
364 } 378 }
365 379
366 HTMLInputElement* LayoutTextControlSingleLine::inputElement() const 380 HTMLInputElement* LayoutTextControlSingleLine::inputElement() const
367 { 381 {
368 return toHTMLInputElement(node()); 382 return toHTMLInputElement(node());
369 } 383 }
370 384
371 } // namespace blink 385 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/fast/forms/text/text-lineheight-centering-expected.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698