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

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

Issue 1276003003: Reland 2: mac: Use a placeholder string for the family name of the system font. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Comments from tkent. 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 // This is a hack which Blink no longer applies on OSX 10.10+.
tkent 2015/08/11 05:24:48 nit: This line looks redundant because LayoutTheme
erikchen 2015/08/11 05:30:02 Done.
307 // https://code.google.com/p/chromium/issues/detail?id=515989#c8
308 if (LayoutTheme::theme().needsHackForTextControlWithFontFamily(family))
307 return scaleEmToUnits(901); 309 return scaleEmToUnits(901);
308 310
309 return LayoutTextControl::getAvgCharWidth(family); 311 return LayoutTextControl::getAvgCharWidth(family);
310 } 312 }
311 313
312 LayoutUnit LayoutTextControlSingleLine::preferredContentLogicalWidth(float charW idth) const 314 LayoutUnit LayoutTextControlSingleLine::preferredContentLogicalWidth(float charW idth) const
313 { 315 {
314 int factor; 316 int factor;
315 bool includesDecoration = inputElement()->sizeShouldIncludeDecoration(factor ); 317 bool includesDecoration = inputElement()->sizeShouldIncludeDecoration(factor );
316 if (factor <= 0) 318 if (factor <= 0)
317 factor = 20; 319 factor = 20;
318 320
319 LayoutUnit result = LayoutUnit::fromFloatCeil(charWidth * factor); 321 LayoutUnit result = LayoutUnit::fromFloatCeil(charWidth * factor);
320 322
321 float maxCharWidth = 0.f; 323 float maxCharWidth = 0.f;
322 AtomicString family = styleRef().font().fontDescription().family().family(); 324 AtomicString family = styleRef().font().fontDescription().family().family();
323 // Since Lucida Grande is the default font, we want this to match the width 325 // 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 326 // 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). 327 // 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 . 328 // value in the "head" font table for MS Shell Dlg.
327 if (family == "Lucida Grande") 329 // This is a hack which Blink no longer applies on OSX 10.10+.
tkent 2015/08/11 05:24:48 Ditto.
erikchen 2015/08/11 05:30:02 Done.
330 // https://code.google.com/p/chromium/issues/detail?id=515989#c8
331 if (LayoutTheme::theme().needsHackForTextControlWithFontFamily(family))
328 maxCharWidth = scaleEmToUnits(4027); 332 maxCharWidth = scaleEmToUnits(4027);
329 else if (hasValidAvgCharWidth(family)) 333 else if (hasValidAvgCharWidth(family))
330 maxCharWidth = roundf(styleRef().font().primaryFont()->maxCharWidth()); 334 maxCharWidth = roundf(styleRef().font().primaryFont()->maxCharWidth());
331 335
332 // For text inputs, IE adds some extra width. 336 // For text inputs, IE adds some extra width.
333 if (maxCharWidth > 0.f) 337 if (maxCharWidth > 0.f)
334 result += maxCharWidth - charWidth; 338 result += maxCharWidth - charWidth;
335 339
336 if (includesDecoration) { 340 if (includesDecoration) {
337 HTMLElement* spinButton = innerSpinButtonElement(); 341 HTMLElement* spinButton = innerSpinButtonElement();
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 if (innerEditorElement()) 449 if (innerEditorElement())
446 innerEditorElement()->setScrollTop(newTop); 450 innerEditorElement()->setScrollTop(newTop);
447 } 451 }
448 452
449 HTMLInputElement* LayoutTextControlSingleLine::inputElement() const 453 HTMLInputElement* LayoutTextControlSingleLine::inputElement() const
450 { 454 {
451 return toHTMLInputElement(node()); 455 return toHTMLInputElement(node());
452 } 456 }
453 457
454 } 458 }
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