| Index: chrome/browser/views/browser_actions_container.cc
|
| diff --git a/chrome/browser/views/browser_actions_container.cc b/chrome/browser/views/browser_actions_container.cc
|
| index f25b0fcaa886d1bca91e464c091a7530ca6300be..a5fe6c2cc49b41fdb52fb830f9e8373ebfa4a862 100644
|
| --- a/chrome/browser/views/browser_actions_container.cc
|
| +++ b/chrome/browser/views/browser_actions_container.cc
|
| @@ -49,6 +49,8 @@ class BrowserActionImageView : public views::TextButton,
|
| BrowserActionsContainer* panel);
|
| ~BrowserActionImageView();
|
|
|
| + ExtensionActionState* browser_action_state() { return browser_action_state_; }
|
| +
|
| // Overridden from views::ButtonListener:
|
| virtual void ButtonPressed(views::Button* sender, const views::Event& event);
|
|
|
| @@ -64,9 +66,6 @@ class BrowserActionImageView : public views::TextButton,
|
| // Called to update the display to match the browser action's state.
|
| void OnStateUpdated();
|
|
|
| - // Override painting to implement the badge.
|
| - virtual void Paint(gfx::Canvas* canvas);
|
| -
|
| // The browser action this view represents. The ExtensionAction is not owned
|
| // by this class.
|
| ExtensionAction* browser_action_;
|
| @@ -143,6 +142,7 @@ void BrowserActionImageView::OnStateUpdated() {
|
| SetIcon(*image);
|
| SetTooltipText(ASCIIToWide(browser_action_state_->title()));
|
| panel_->OnBrowserActionVisibilityChanged();
|
| + SchedulePaint();
|
| }
|
|
|
| void BrowserActionImageView::Observe(NotificationType type,
|
| @@ -231,7 +231,7 @@ gfx::Size BrowserActionsContainer::GetPreferredSize() {
|
|
|
| void BrowserActionsContainer::Layout() {
|
| for (size_t i = 0; i < browser_action_views_.size(); ++i) {
|
| - views::TextButton* view = browser_action_views_[i];
|
| + BrowserActionImageView* view = browser_action_views_[i];
|
| int x = kHorizontalPadding + i * kIconSize;
|
| view->SetBounds(x, kControlVertOffset, kIconSize,
|
| height() - (2 * kControlVertOffset));
|
| @@ -253,20 +253,18 @@ void BrowserActionsContainer::Observe(NotificationType type,
|
| void BrowserActionsContainer::PaintChildren(gfx::Canvas* canvas) {
|
| View::PaintChildren(canvas);
|
|
|
| - // TODO(aa): Hook this up to the API to feed the badge color and text
|
| - // dynamically.
|
| - std::string text;
|
| for (size_t i = 0; i < browser_action_views_.size(); ++i) {
|
| - if (i > 0) {
|
| - text += IntToString(i);
|
| - PaintBadge(canvas, browser_action_views_[i],
|
| - SkColorSetARGB(255, 218, 0, 24), text);
|
| - }
|
| + BrowserActionImageView* view = browser_action_views_[i];
|
| + const std::string& text = view->browser_action_state()->badge_text();
|
| + SkColor* color = view->browser_action_state()->badge_background_color();
|
| +
|
| + if (!text.empty())
|
| + PaintBadge(canvas, browser_action_views_[i], *color, text);
|
| }
|
| }
|
|
|
| void BrowserActionsContainer::PaintBadge(gfx::Canvas* canvas,
|
| - views::TextButton* view,
|
| + BrowserActionImageView* view,
|
| const SkColor& badge_color,
|
| const std::string& text) {
|
| const int kTextSize = 8;
|
|
|