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

Unified Diff: ui/views/controls/button/label_button.cc

Issue 2801583002: Use views::style for buttons, bootstrap ash_typography to do so. (Closed)
Patch Set: placate gn check. new_avatar_button now just avatar_button Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
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 de45e4850a5d9ab6d045a05e07c79ac5525c3297..aa8dae709ab3133713875817512ab085cc2df13e 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_(),
@@ -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_);
-}
-
bool LabelButton::ShouldUseFloodFillInkDrop() const {
return !GetText().empty();
}
@@ -526,9 +469,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();
}

Powered by Google App Engine
This is Rietveld 408576698