Chromium Code Reviews| Index: ui/views/controls/button/label_button.cc |
| diff --git a/ui/views/controls/button/label_button.cc b/ui/views/controls/button/label_button.cc |
| index 551c0b2653e908c65b996827435e411569470314..80d2de485548c3335c0bcfd5ea6c85136ec05f6c 100644 |
| --- a/ui/views/controls/button/label_button.cc |
| +++ b/ui/views/controls/button/label_button.cc |
| @@ -31,61 +31,23 @@ |
| #include "ui/views/style/platform_style.h" |
| #include "ui/views/window/dialog_delegate.h" |
| -namespace { |
| - |
| -gfx::Font::Weight GetValueBolderThan(gfx::Font::Weight weight) { |
| - if (weight < gfx::Font::Weight::BOLD) |
| - return gfx::Font::Weight::BOLD; |
| - switch (weight) { |
| - case gfx::Font::Weight::BOLD: |
| - return gfx::Font::Weight::EXTRA_BOLD; |
| - case gfx::Font::Weight::EXTRA_BOLD: |
| - case gfx::Font::Weight::BLACK: |
| - return gfx::Font::Weight::BLACK; |
| - default: |
| - NOTREACHED(); |
| - } |
| - return gfx::Font::Weight::INVALID; |
| -} |
| - |
| -const gfx::FontList& GetDefaultNormalFontList() { |
| - static base::LazyInstance<gfx::FontList>::Leaky font_list = |
| - LAZY_INSTANCE_INITIALIZER; |
| - return font_list.Get(); |
| -} |
| - |
| -const gfx::FontList& GetDefaultBoldFontList() { |
| - if (!views::PlatformStyle::kDefaultLabelButtonHasBoldFont) |
| - return GetDefaultNormalFontList(); |
| - |
| - static base::LazyInstance<gfx::FontList>::Leaky font_list = |
| - LAZY_INSTANCE_INITIALIZER; |
| - |
| - static const gfx::Font::Weight default_bold_weight = |
| - font_list.Get().GetFontWeight(); |
| - |
| - font_list.Get() = font_list.Get().DeriveWithWeight( |
| - GetValueBolderThan(default_bold_weight)); |
| - DCHECK_GE(font_list.Get().GetFontWeight(), gfx::Font::Weight::BOLD); |
| - |
| - return font_list.Get(); |
| -} |
| - |
| -} // namespace |
| - |
| namespace views { |
| // static |
| const int LabelButton::kHoverAnimationDurationMs = 170; |
| const char LabelButton::kViewClassName[] = "LabelButton"; |
| -LabelButton::LabelButton(ButtonListener* listener, const base::string16& text) |
| +LabelButton::LabelButton(ButtonListener* listener, |
| + const base::string16& text, |
| + int button_context) |
| : CustomButton(listener), |
| image_(new ImageView()), |
| - label_(new Label()), |
| + label_(new Label(text, button_context, style::STYLE_PRIMARY)), |
| ink_drop_container_(new InkDropContainerView()), |
| - cached_normal_font_list_(GetDefaultNormalFontList()), |
| - cached_bold_font_list_(GetDefaultBoldFontList()), |
| + cached_normal_font_list_( |
| + style::GetFont(button_context, style::STYLE_PRIMARY)), |
| + cached_default_button_font_list_( |
| + style::GetFont(button_context, style::STYLE_DIALOG_BUTTON_DEFAULT)), |
| button_state_images_(), |
| button_state_colors_(), |
| explicitly_set_colors_(), |
| @@ -96,7 +58,7 @@ LabelButton::LabelButton(ButtonListener* listener, const base::string16& text) |
| DISTANCE_RELATED_CONTROL_HORIZONTAL)), |
| horizontal_alignment_(gfx::ALIGN_LEFT) { |
| SetAnimationDuration(kHoverAnimationDurationMs); |
| - SetTextInternal(text); |
| + SetAccessibleName(text); |
|
sky
2017/05/12 17:00:11
It seems less error prone to call SetTextInternal
tapted
2017/05/15 23:02:32
Went back to SetTextInternal.
This means the text
|
| AddChildView(ink_drop_container_); |
| ink_drop_container_->SetPaintToLayer(); |
| @@ -107,7 +69,6 @@ LabelButton::LabelButton(ButtonListener* listener, const base::string16& text) |
| image_->set_can_process_events_within_subtree(false); |
| AddChildView(label_); |
| - label_->SetFontList(cached_normal_font_list_); |
| label_->SetAutoColorReadabilityEnabled(false); |
| label_->SetHorizontalAlignment(gfx::ALIGN_TO_HEAD); |
| @@ -159,11 +120,6 @@ void LabelButton::SetTextSubpixelRenderingEnabled(bool enabled) { |
| label_->SetSubpixelRenderingEnabled(enabled); |
| } |
| -void LabelButton::AdjustFontSize(int font_size_delta) { |
| - LabelButton::SetFontList( |
| - label()->font_list().DeriveWithSizeDelta(font_size_delta)); |
| -} |
| - |
| void LabelButton::SetElideBehavior(gfx::ElideBehavior elide_behavior) { |
| label_->SetElideBehavior(elide_behavior); |
| } |
| @@ -241,7 +197,7 @@ gfx::Size LabelButton::GetPreferredSize() const { |
| // Some text appears wider when rendered normally than when rendered bold. |
| // Accommodate the widest, as buttons may show bold and shouldn't resize. |
| const int current_width = label.GetPreferredSize().width(); |
| - label.SetFontList(cached_bold_font_list_); |
| + label.SetFontList(cached_default_button_font_list_); |
| if (label.GetPreferredSize().width() < current_width) |
| label.SetFontList(label_->font_list()); |
| } |
| @@ -378,19 +334,6 @@ gfx::Rect LabelButton::GetChildAreaBounds() { |
| return GetLocalBounds(); |
| } |
| -void LabelButton::SetFontList(const gfx::FontList& font_list) { |
| - cached_normal_font_list_ = font_list; |
| - if (PlatformStyle::kDefaultLabelButtonHasBoldFont) { |
| - cached_bold_font_list_ = font_list.DeriveWithWeight( |
| - GetValueBolderThan(font_list.GetFontWeight())); |
| - if (is_default_) { |
| - label_->SetFontList(cached_bold_font_list_); |
| - return; |
| - } |
| - } |
| - label_->SetFontList(cached_normal_font_list_); |
| -} |
| - |
| void LabelButton::OnPaint(gfx::Canvas* canvas) { |
| View::OnPaint(canvas); |
| Painter::PaintFocusPainter(this, canvas, focus_painter_.get()); |
| @@ -522,9 +465,17 @@ void LabelButton::ResetColorsFromNativeTheme() { |
| } |
| void LabelButton::UpdateStyleToIndicateDefaultStatus() { |
| + // Check that a subclass hasn't replaced the Label font. These buttons may |
| + // never be given default status. |
| + DCHECK_EQ(cached_normal_font_list_.GetFontSize(), |
| + label()->font_list().GetFontSize()); |
| const bool bold = |
| PlatformStyle::kDefaultLabelButtonHasBoldFont && is_default_; |
| - label_->SetFontList(bold ? cached_bold_font_list_ : cached_normal_font_list_); |
| + // TODO(tapted): This should use style::GetFont(), but this part can just be |
| + // deleted when default buttons no longer go bold. Colors will need updating |
| + // still. |
| + label_->SetFontList(bold ? cached_default_button_font_list_ |
| + : cached_normal_font_list_); |
| InvalidateLayout(); |
| ResetLabelEnabledColor(); |
| } |