Chromium Code Reviews| Index: ui/views/controls/textfield/textfield.cc |
| diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc |
| index 258e90b6acb8f276dd872c5d21b27209974c6dd1..a23f66b10f39535d0b229a647ba5f7c29171e539 100644 |
| --- a/ui/views/controls/textfield/textfield.cc |
| +++ b/ui/views/controls/textfield/textfield.cc |
| @@ -14,6 +14,7 @@ |
| #include "ui/base/ime/text_input_type.h" |
| #include "ui/base/keycodes/keyboard_codes.h" |
| #include "ui/base/range/range.h" |
| +#include "ui/base/resource/resource_bundle.h" |
| #include "ui/base/ui_base_switches.h" |
| #include "ui/base/ui_base_switches_util.h" |
| #include "ui/gfx/insets.h" |
| @@ -79,6 +80,7 @@ Textfield::Textfield() |
| : native_wrapper_(NULL), |
| controller_(NULL), |
| style_(STYLE_DEFAULT), |
| + font_list_(GetDefaultFontList()), |
| read_only_(false), |
| default_width_in_chars_(0), |
| draw_border_(true), |
| @@ -103,6 +105,7 @@ Textfield::Textfield(StyleFlags style) |
| : native_wrapper_(NULL), |
| controller_(NULL), |
| style_(style), |
| + font_list_(GetDefaultFontList()), |
| read_only_(false), |
| default_width_in_chars_(0), |
| draw_border_(true), |
| @@ -270,13 +273,21 @@ void Textfield::SetCursorEnabled(bool enabled) { |
| native_wrapper_->SetCursorEnabled(enabled); |
| } |
| -void Textfield::SetFont(const gfx::Font& font) { |
| - font_ = font; |
| +void Textfield::SetFontList(const gfx::FontList& font_list) { |
| + font_list_ = font_list; |
| if (native_wrapper_) |
| native_wrapper_->UpdateFont(); |
| PreferredSizeChanged(); |
| } |
| +const gfx::Font& Textfield::GetPrimaryFont() const { |
| + return font_list_.GetPrimaryFont(); |
| +} |
| + |
| +void Textfield::SetFont(const gfx::Font& font) { |
| + SetFontList(gfx::FontList(font)); |
| +} |
| + |
| void Textfield::SetHorizontalMargins(int left, int right) { |
| margins_.Set(margins_.top(), left, margins_.bottom(), right); |
| horizontal_margins_were_set_ = true; |
| @@ -424,22 +435,19 @@ void Textfield::Layout() { |
| int Textfield::GetBaseline() const { |
| gfx::Insets insets = GetTextInsets(); |
| const int baseline = native_wrapper_ ? |
| - native_wrapper_->GetTextfieldBaseline() : font_.GetBaseline(); |
| + native_wrapper_->GetTextfieldBaseline() : font_list_.GetBaseline(); |
| return insets.top() + baseline; |
| } |
| gfx::Size Textfield::GetPreferredSize() { |
| gfx::Insets insets = GetTextInsets(); |
| - // For NativeTextfieldViews, we might use a pre-defined font list (defined in |
| - // IDS_UI_FONT_FAMILY_CROS) as the fonts to render text. The fonts in the |
| - // list might be different (in name or in size) from |font_|, so we need to |
| - // use GetFontHeight() to get the height of the first font in the list to |
| - // guide textfield's height. |
| const int font_height = native_wrapper_ ? native_wrapper_->GetFontHeight() : |
| - font_.GetHeight(); |
| - return gfx::Size(font_.GetExpectedTextWidth(default_width_in_chars_) + |
| - insets.width(), font_height + insets.height()); |
| + font_list_.GetHeight(); |
| + return gfx::Size( |
| + GetPrimaryFont().GetExpectedTextWidth(default_width_in_chars_) |
| + + insets.width(), |
| + font_height + insets.height()); |
| } |
| void Textfield::AboutToRequestFocusFromTabTraversal(bool reverse) { |
| @@ -542,6 +550,12 @@ const char* Textfield::GetClassName() const { |
| return kViewClassName; |
| } |
| +// static |
| +gfx::FontList Textfield::GetDefaultFontList() { |
|
msw
2013/07/30 21:32:27
This is only used by the Textfield ctors above. In
Yuki
2013/07/31 05:38:43
Done.
|
| + return ResourceBundle::GetSharedInstance().GetFontList( |
| + ResourceBundle::BaseFont); |
| +} |
| + |
| gfx::Insets Textfield::GetTextInsets() const { |
| gfx::Insets insets = GetInsets(); |
| if (draw_border_ && native_wrapper_) |