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..6d982e00ff83bf9aff60fbbbb86e91392fe49d50 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" |
@@ -39,6 +40,11 @@ namespace { |
// Default placeholder text color. |
const SkColor kDefaultPlaceholderTextColor = SK_ColorLTGRAY; |
+gfx::FontList GetDefaultFontList() { |
+ return ResourceBundle::GetSharedInstance().GetFontList( |
+ ResourceBundle::BaseFont); |
+} |
+ |
} // namespace |
namespace views { |
@@ -79,6 +85,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 +110,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 +278,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 +440,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) { |