| Index: views/controls/button/text_button.cc
|
| diff --git a/views/controls/button/text_button.cc b/views/controls/button/text_button.cc
|
| index 9fcf477438dc34431701e0d7acfc4c40cde0cf87..98c69fe5b270d35d400d96f232b3e789bc73c1a6 100644
|
| --- a/views/controls/button/text_button.cc
|
| +++ b/views/controls/button/text_button.cc
|
| @@ -34,6 +34,20 @@ const SkColor TextButton::kHoverColor = TextButton::kEnabledColor;
|
| // How long the hover fade animation should last.
|
| static const int kHoverAnimationDurationMs = 170;
|
|
|
| +static int PrefixTypeToCanvasType(TextButton::PrefixType type) {
|
| + switch (type) {
|
| + case TextButton::PREFIX_HIDE:
|
| + return gfx::Canvas::HIDE_PREFIX;
|
| + case TextButton::PREFIX_SHOW:
|
| + return gfx::Canvas::SHOW_PREFIX;
|
| + case TextButton::PREFIX_NONE:
|
| + return 0;
|
| + default:
|
| + NOTREACHED();
|
| + return 0;
|
| + }
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| //
|
| // TextButtonBorder - constructors, destructors, initialization
|
| @@ -176,7 +190,8 @@ TextButton::TextButton(ButtonListener* listener, const std::wstring& text)
|
| has_hover_icon_(false),
|
| max_width_(0),
|
| normal_has_border_(false),
|
| - show_highlighted_(true) {
|
| + show_highlighted_(true),
|
| + prefix_type_(PREFIX_NONE) {
|
| SetText(text);
|
| set_border(new TextButtonBorder);
|
| SetAnimationDuration(kHoverAnimationDurationMs);
|
| @@ -187,11 +202,7 @@ TextButton::~TextButton() {
|
|
|
| void TextButton::SetText(const std::wstring& text) {
|
| text_ = text;
|
| - // Update our new current and max text size
|
| - text_size_.SetSize(font_.GetStringWidth(text_), font_.height());
|
| - max_text_size_.SetSize(std::max(max_text_size_.width(), text_size_.width()),
|
| - std::max(max_text_size_.height(),
|
| - text_size_.height()));
|
| + UpdateTextSize();
|
| }
|
|
|
| void TextButton::SetIcon(const SkBitmap& icon) {
|
| @@ -205,6 +216,7 @@ void TextButton::SetHoverIcon(const SkBitmap& icon) {
|
|
|
| void TextButton::SetFont(const gfx::Font& font) {
|
| font_ = font;
|
| + UpdateTextSize();
|
| }
|
|
|
| void TextButton::SetEnabledColor(SkColor color) {
|
| @@ -318,6 +330,9 @@ void TextButton::Paint(gfx::Canvas* canvas, bool for_drag) {
|
| else
|
| text_color = color_;
|
|
|
| + int draw_string_flags = gfx::Canvas::DefaultCanvasTextAlignment() |
|
| + PrefixTypeToCanvasType(prefix_type_);
|
| +
|
| if (for_drag) {
|
| #if defined(OS_WIN)
|
| // TODO(erg): Either port DrawStringWithHalo to linux or find an
|
| @@ -327,7 +342,7 @@ void TextButton::Paint(gfx::Canvas* canvas, bool for_drag) {
|
| text_bounds.y(),
|
| text_bounds.width(),
|
| text_bounds.height(),
|
| - gfx::Canvas::DefaultCanvasTextAlignment());
|
| + draw_string_flags);
|
| #else
|
| canvas->DrawStringInt(text_,
|
| font_,
|
| @@ -335,7 +350,8 @@ void TextButton::Paint(gfx::Canvas* canvas, bool for_drag) {
|
| text_bounds.x(),
|
| text_bounds.y(),
|
| text_bounds.width(),
|
| - text_bounds.height());
|
| + text_bounds.height(),
|
| + draw_string_flags);
|
| #endif
|
| } else {
|
| canvas->DrawStringInt(text_,
|
| @@ -344,7 +360,8 @@ void TextButton::Paint(gfx::Canvas* canvas, bool for_drag) {
|
| text_bounds.x(),
|
| text_bounds.y(),
|
| text_bounds.width(),
|
| - text_bounds.height());
|
| + text_bounds.height(),
|
| + draw_string_flags);
|
| }
|
| }
|
|
|
| @@ -362,6 +379,17 @@ void TextButton::UpdateColor() {
|
| color_ = IsEnabled() ? color_enabled_ : color_disabled_;
|
| }
|
|
|
| +void TextButton::UpdateTextSize() {
|
| + int width = 0, height = 0;
|
| + gfx::Canvas::SizeStringInt(
|
| + text_, font_, &width, &height,
|
| + gfx::Canvas::NO_ELLIPSIS | PrefixTypeToCanvasType(prefix_type_));
|
| + text_size_.SetSize(width, font_.height());
|
| + max_text_size_.SetSize(std::max(max_text_size_.width(), text_size_.width()),
|
| + std::max(max_text_size_.height(),
|
| + text_size_.height()));
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // TextButton, View overrides:
|
|
|
| @@ -396,12 +424,6 @@ void TextButton::SetEnabled(bool enabled) {
|
| SchedulePaint();
|
| }
|
|
|
| -bool TextButton::OnMousePressed(const MouseEvent& e) {
|
| - if (request_focus_on_press())
|
| - RequestFocus();
|
| - return true;
|
| -}
|
| -
|
| void TextButton::Paint(gfx::Canvas* canvas) {
|
| Paint(canvas, false);
|
| }
|
|
|