| Index: chrome/browser/ui/views/avatar_label.cc
|
| diff --git a/chrome/browser/ui/views/avatar_label.cc b/chrome/browser/ui/views/avatar_label.cc
|
| index 9bdb576a2efc2021bca859a9c6bebafc0e0ed779..65ae8fc9ceaddfa0cb1ac28a33bcd4f64fb64092 100644
|
| --- a/chrome/browser/ui/views/avatar_label.cc
|
| +++ b/chrome/browser/ui/views/avatar_label.cc
|
| @@ -6,31 +6,30 @@
|
|
|
| #include "base/memory/scoped_ptr.h"
|
| #include "chrome/browser/themes/theme_properties.h"
|
| -#include "chrome/browser/ui/views/avatar_menu_bubble_view.h"
|
| #include "chrome/browser/ui/views/frame/browser_view.h"
|
| #include "grit/generated_resources.h"
|
| #include "grit/theme_resources.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/theme_provider.h"
|
| -#include "ui/events/event.h"
|
| #include "ui/gfx/canvas.h"
|
| #include "ui/gfx/color_utils.h"
|
| -#include "ui/gfx/font_list.h"
|
| #include "ui/views/painter.h"
|
|
|
| namespace {
|
|
|
| -// A special text button border for the managed user avatar label.
|
| -class AvatarLabelBorder: public views::TextButtonBorder {
|
| +// A custom border for the managed user avatar label.
|
| +class AvatarLabelBorder : public views::Border {
|
| public:
|
| explicit AvatarLabelBorder(bool label_on_right);
|
|
|
| - // views::TextButtonBorder:
|
| + // views::Border:
|
| virtual void Paint(const views::View& view, gfx::Canvas* canvas) OVERRIDE;
|
| + virtual gfx::Insets GetInsets() const OVERRIDE;
|
| virtual gfx::Size GetMinimumSize() const OVERRIDE;
|
|
|
| private:
|
| scoped_ptr<views::Painter> painter_;
|
| + gfx::Insets insets_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(AvatarLabelBorder);
|
| };
|
| @@ -42,15 +41,13 @@ AvatarLabelBorder::AvatarLabelBorder(bool label_on_right) {
|
| const int kVerticalInsetBottom = 3;
|
| // We want to align with the top of the tab. This works if the default font
|
| // size is 13. If it is smaller, we need to increase the TopInset accordingly.
|
| - const gfx::FontList font_list;
|
| - int difference =
|
| - (font_list.GetFontSize() < 13) ? 13 - font_list.GetFontSize() : 0;
|
| - int addToTop = difference / 2;
|
| - int addToBottom = difference - addToTop;
|
| - SetInsets(gfx::Insets(kVerticalInsetTop + addToTop,
|
| + const int difference = std::max<int>(0, 13 - gfx::FontList().GetFontSize());
|
| + const int addToTop = difference / 2;
|
| + const int addToBottom = difference - addToTop;
|
| + insets_ = gfx::Insets(kVerticalInsetTop + addToTop,
|
| kHorizontalInsetLeft,
|
| kVerticalInsetBottom + addToBottom,
|
| - kHorizontalInsetRight));
|
| + kHorizontalInsetRight);
|
| const int kImages[] = IMAGE_GRID(IDR_MANAGED_USER_LABEL);
|
| painter_.reset(views::Painter::CreateImageGridPainter(kImages));
|
| }
|
| @@ -60,7 +57,7 @@ void AvatarLabelBorder::Paint(const views::View& view, gfx::Canvas* canvas) {
|
| // includes a border with almost transparent white color.
|
| painter_->Paint(canvas, view.size());
|
|
|
| - // Now repaint the inner part of the background in order to be able to change
|
| + // Repaint the inner part of the background in order to be able to change
|
| // the colors according to the currently installed theme.
|
| gfx::Rect rect(1, 1, view.size().width() - 2, view.size().height() - 2);
|
| SkPaint paint;
|
| @@ -69,20 +66,22 @@ void AvatarLabelBorder::Paint(const views::View& view, gfx::Canvas* canvas) {
|
| ThemeProperties::COLOR_MANAGED_USER_LABEL_BACKGROUND);
|
| paint.setStyle(SkPaint::kFill_Style);
|
|
|
| - // For the inner border, use a color which is slightly darker than the
|
| - // background color.
|
| + // Paint the inner border with a color slightly darker than the background.
|
| SkAlpha kAlphaForBlending = 230;
|
| paint.setColor(color_utils::AlphaBlend(
|
| background_color, SK_ColorBLACK, kAlphaForBlending));
|
| canvas->DrawRoundRect(rect, kRadius, paint);
|
|
|
| - // Now paint the inner background using the color provided by the
|
| - // ThemeProvider.
|
| + // Paint the inner background using the color provided by the ThemeProvider.
|
| paint.setColor(background_color);
|
| rect = gfx::Rect(2, 2, view.size().width() - 4, view.size().height() - 4);
|
| canvas->DrawRoundRect(rect, kRadius, paint);
|
| }
|
|
|
| +gfx::Insets AvatarLabelBorder::GetInsets() const {
|
| + return insets_;
|
| +}
|
| +
|
| gfx::Size AvatarLabelBorder::GetMinimumSize() const {
|
| gfx::Size size(4, 4);
|
| size.SetToMax(painter_->GetMinimumSize());
|
| @@ -92,10 +91,9 @@ gfx::Size AvatarLabelBorder::GetMinimumSize() const {
|
| } // namespace
|
|
|
| AvatarLabel::AvatarLabel(BrowserView* browser_view)
|
| - : TextButton(NULL,
|
| - l10n_util::GetStringUTF16(IDS_MANAGED_USER_AVATAR_LABEL)),
|
| + : LabelButton(NULL,
|
| + l10n_util::GetStringUTF16(IDS_MANAGED_USER_AVATAR_LABEL)),
|
| browser_view_(browser_view) {
|
| - ClearMaxTextSize();
|
| SetLabelOnRight(false);
|
| UpdateLabelStyle();
|
| }
|
| @@ -103,7 +101,7 @@ AvatarLabel::AvatarLabel(BrowserView* browser_view)
|
| AvatarLabel::~AvatarLabel() {}
|
|
|
| bool AvatarLabel::OnMousePressed(const ui::MouseEvent& event) {
|
| - if (!TextButton::OnMousePressed(event))
|
| + if (!LabelButton::OnMousePressed(event))
|
| return false;
|
|
|
| browser_view_->ShowAvatarBubbleFromAvatarButton();
|
| @@ -117,10 +115,8 @@ void AvatarLabel::UpdateLabelStyle() {
|
|
|
| SkColor color_label = browser_view_->frame()->GetThemeProvider()->GetColor(
|
| ThemeProperties::COLOR_MANAGED_USER_LABEL);
|
| - SetEnabledColor(color_label);
|
| - SetHighlightColor(color_label);
|
| - SetHoverColor(color_label);
|
| - SetDisabledColor(color_label);
|
| + for (size_t state = 0; state < STATE_COUNT; ++state)
|
| + SetTextColor(static_cast<ButtonState>(state), color_label);
|
| SchedulePaint();
|
| }
|
|
|
|
|