summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
authorglen@chromium.org <glen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-04 02:31:20 +0000
committerglen@chromium.org <glen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-04 02:31:20 +0000
commit198d0468712f48b7d02a5366cfa03989061ed147 (patch)
treef5e9166965cfaafba50f9532ab1049147c7b9710 /views
parent6e853c3ad131fe6713ce8efbac2270fee26ab5b2 (diff)
downloadchromium_src-198d0468712f48b7d02a5366cfa03989061ed147.zip
chromium_src-198d0468712f48b7d02a5366cfa03989061ed147.tar.gz
chromium_src-198d0468712f48b7d02a5366cfa03989061ed147.tar.bz2
Reland of r17500:
Theme our bookmark bar buttons. BUG=12467 TEST=Apply a theme and verify that bookmark bar text colors changes. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17587 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r--views/controls/button/text_button.cc27
-rw-r--r--views/controls/button/text_button.h12
2 files changed, 36 insertions, 3 deletions
diff --git a/views/controls/button/text_button.cc b/views/controls/button/text_button.cc
index e468e9e..cc8eb08 100644
--- a/views/controls/button/text_button.cc
+++ b/views/controls/button/text_button.cc
@@ -156,6 +156,9 @@ TextButton::TextButton(ButtonListener* listener, const std::wstring& text)
font_(ResourceBundle::GetSharedInstance().GetFont(
ResourceBundle::BaseFont)),
color_(kEnabledColor),
+ color_enabled_(kEnabledColor),
+ color_disabled_(kDisabledColor),
+ color_highlight_(kHighlightColor),
max_width_(0) {
SetText(text);
set_border(new TextButtonBorder);
@@ -178,6 +181,20 @@ void TextButton::SetIcon(const SkBitmap& icon) {
icon_ = icon;
}
+void TextButton::SetEnabledColor(SkColor color) {
+ color_enabled_ = color;
+ UpdateColor();
+}
+
+void TextButton::SetDisabledColor(SkColor color) {
+ color_disabled_ = color;
+ UpdateColor();
+}
+
+void TextButton::SetHighlightColor(SkColor color) {
+ color_highlight_ = color;
+}
+
void TextButton::ClearMaxTextSize() {
max_text_size_ = text_size_;
}
@@ -245,7 +262,7 @@ void TextButton::Paint(gfx::Canvas* canvas, bool for_drag) {
#if defined(OS_WIN)
// TODO(erg): Either port DrawStringWithHalo to linux or find an
// alternative here.
- canvas->DrawStringWithHalo(text_, font_, color_, kHighlightColor,
+ canvas->DrawStringWithHalo(text_, font_, color_, color_highlight_,
text_bounds.x(),
text_bounds.y(),
text_bounds.width(),
@@ -256,7 +273,7 @@ void TextButton::Paint(gfx::Canvas* canvas, bool for_drag) {
// Draw bevel highlight
canvas->DrawStringInt(text_,
font_,
- kHighlightColor,
+ color_highlight_,
text_bounds.x() + 1,
text_bounds.y() + 1,
text_bounds.width(),
@@ -282,6 +299,10 @@ void TextButton::Paint(gfx::Canvas* canvas, bool for_drag) {
}
}
+void TextButton::UpdateColor() {
+ color_ = IsEnabled() ? color_enabled_ : color_disabled_;
+}
+
////////////////////////////////////////////////////////////////////////////////
// TextButton, View overrides:
@@ -310,7 +331,7 @@ void TextButton::SetEnabled(bool enabled) {
if (enabled == IsEnabled())
return;
CustomButton::SetEnabled(enabled);
- color_ = enabled ? kEnabledColor : kDisabledColor;
+ UpdateColor();
SchedulePaint();
}
diff --git a/views/controls/button/text_button.h b/views/controls/button/text_button.h
index 1a8134e..e18ef59 100644
--- a/views/controls/button/text_button.h
+++ b/views/controls/button/text_button.h
@@ -89,6 +89,9 @@ class TextButton : public CustomButton {
void ClearMaxTextSize();
void set_max_width(int max_width) { max_width_ = max_width; }
+ void SetEnabledColor(SkColor color);
+ void SetDisabledColor(SkColor color);
+ void SetHighlightColor(SkColor color);
// Paint the button into the specified canvas. If |for_drag| is true, the
// function paints a drag image representation into the canvas.
@@ -103,6 +106,10 @@ class TextButton : public CustomButton {
virtual bool OnMousePressed(const MouseEvent& e);
virtual void Paint(gfx::Canvas* canvas);
+ // Called when enabled or disabled state changes, or the colors for those
+ // states change.
+ virtual void UpdateColor();
+
private:
// The text string that is displayed in the button.
std::wstring text_;
@@ -123,6 +130,11 @@ class TextButton : public CustomButton {
// Text color.
SkColor color_;
+ // State colors.
+ SkColor color_enabled_;
+ SkColor color_disabled_;
+ SkColor color_highlight_;
+
// An icon displayed with the text.
SkBitmap icon_;