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

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

Issue 1292593003: Revert "Revert "Reland 2: mac: Use a placeholder string for the family name of the system font." Br… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 4 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 | « Source/core/layout/LayoutTextControlMultiLine.cpp ('k') | Source/core/layout/LayoutTheme.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, 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 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 ASSERT(hasControlClip()); 292 ASSERT(hasControlClip());
293 LayoutRect clipRect = contentBoxRect(); 293 LayoutRect clipRect = contentBoxRect();
294 if (containerElement()->layoutBox()) 294 if (containerElement()->layoutBox())
295 clipRect = unionRect(clipRect, containerElement()->layoutBox()->frameRec t()); 295 clipRect = unionRect(clipRect, containerElement()->layoutBox()->frameRec t());
296 clipRect.moveBy(additionalOffset); 296 clipRect.moveBy(additionalOffset);
297 return clipRect; 297 return clipRect;
298 } 298 }
299 299
300 float LayoutTextControlSingleLine::getAvgCharWidth(const AtomicString& family) c onst 300 float LayoutTextControlSingleLine::getAvgCharWidth(const AtomicString& family) c onst
301 { 301 {
302 // Since Lucida Grande is the default font, we want this to match the width 302 // Match the default system font to the width of MS Shell Dlg, the default
303 // of MS Shell Dlg, the default font for textareas in Firefox, Safari Win an d 303 // font for textareas in Firefox, Safari Win and IE for some encodings (in
304 // IE for some encodings (in IE, the default font is encoding specific). 304 // IE, the default font is encoding specific). 901 is the avgCharWidth value
305 // 901 is the avgCharWidth value in the OS/2 table for MS Shell Dlg. 305 // in the OS/2 table for MS Shell Dlg.
306 if (family == "Lucida Grande") 306 if (LayoutTheme::theme().needsHackForTextControlWithFontFamily(family))
307 return scaleEmToUnits(901); 307 return scaleEmToUnits(901);
308 308
309 return LayoutTextControl::getAvgCharWidth(family); 309 return LayoutTextControl::getAvgCharWidth(family);
310 } 310 }
311 311
312 LayoutUnit LayoutTextControlSingleLine::preferredContentLogicalWidth(float charW idth) const 312 LayoutUnit LayoutTextControlSingleLine::preferredContentLogicalWidth(float charW idth) const
313 { 313 {
314 int factor; 314 int factor;
315 bool includesDecoration = inputElement()->sizeShouldIncludeDecoration(factor ); 315 bool includesDecoration = inputElement()->sizeShouldIncludeDecoration(factor );
316 if (factor <= 0) 316 if (factor <= 0)
317 factor = 20; 317 factor = 20;
318 318
319 LayoutUnit result = LayoutUnit::fromFloatCeil(charWidth * factor); 319 LayoutUnit result = LayoutUnit::fromFloatCeil(charWidth * factor);
320 320
321 float maxCharWidth = 0.f; 321 float maxCharWidth = 0.f;
322 AtomicString family = styleRef().font().fontDescription().family().family(); 322 AtomicString family = styleRef().font().fontDescription().family().family();
323 // Since Lucida Grande is the default font, we want this to match the width 323 // Match the default system font to the width of MS Shell Dlg, the default
324 // of MS Shell Dlg, the default font for textareas in Firefox, Safari Win an d 324 // font for textareas in Firefox, Safari Win and IE for some encodings (in
325 // IE for some encodings (in IE, the default font is encoding specific). 325 // IE, the default font is encoding specific). 4027 is the (xMax - xMin)
326 // 4027 is the (xMax - xMin) value in the "head" font table for MS Shell Dlg . 326 // value in the "head" font table for MS Shell Dlg.
327 if (family == "Lucida Grande") 327 if (LayoutTheme::theme().needsHackForTextControlWithFontFamily(family))
328 maxCharWidth = scaleEmToUnits(4027); 328 maxCharWidth = scaleEmToUnits(4027);
329 else if (hasValidAvgCharWidth(family)) 329 else if (hasValidAvgCharWidth(family))
330 maxCharWidth = roundf(styleRef().font().primaryFont()->maxCharWidth()); 330 maxCharWidth = roundf(styleRef().font().primaryFont()->maxCharWidth());
331 331
332 // For text inputs, IE adds some extra width. 332 // For text inputs, IE adds some extra width.
333 if (maxCharWidth > 0.f) 333 if (maxCharWidth > 0.f)
334 result += maxCharWidth - charWidth; 334 result += maxCharWidth - charWidth;
335 335
336 if (includesDecoration) { 336 if (includesDecoration) {
337 HTMLElement* spinButton = innerSpinButtonElement(); 337 HTMLElement* spinButton = innerSpinButtonElement();
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 if (innerEditorElement()) 445 if (innerEditorElement())
446 innerEditorElement()->setScrollTop(newTop); 446 innerEditorElement()->setScrollTop(newTop);
447 } 447 }
448 448
449 HTMLInputElement* LayoutTextControlSingleLine::inputElement() const 449 HTMLInputElement* LayoutTextControlSingleLine::inputElement() const
450 { 450 {
451 return toHTMLInputElement(node()); 451 return toHTMLInputElement(node());
452 } 452 }
453 453
454 } 454 }
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutTextControlMultiLine.cpp ('k') | Source/core/layout/LayoutTheme.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698