Index: chrome/browser/views/tabs/tab_strip.cc |
=================================================================== |
--- chrome/browser/views/tabs/tab_strip.cc (revision 19774) |
+++ chrome/browser/views/tabs/tab_strip.cc (working copy) |
@@ -16,6 +16,7 @@ |
#endif |
#include "base/gfx/size.h" |
#include "base/stl_util-inl.h" |
+#include "chrome/browser/browser_theme_provider.h" |
#include "chrome/browser/metrics/user_metrics.h" |
#include "chrome/browser/profile.h" |
#include "chrome/browser/tab_contents/tab_contents.h" |
@@ -29,6 +30,7 @@ |
#include "grit/theme_resources.h" |
#include "views/controls/image_view.h" |
#include "views/painter.h" |
+#include "views/widget/default_theme_provider.h" |
#include "views/window/non_client_view.h" |
#include "views/window/window.h" |
@@ -595,6 +597,13 @@ |
GetTabAt(i)->SetBackgroundOffset(offset); |
} |
+void TabStrip::InitTabStripButtons() { |
+ newtab_button_ = new NewTabButton(this); |
+ LoadNewTabButtonImage(); |
+ newtab_button_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_NEWTAB)); |
+ AddChildView(newtab_button_); |
+} |
+ |
/////////////////////////////////////////////////////////////////////////////// |
// TabStrip, views::View overrides: |
@@ -768,6 +777,10 @@ |
return this; |
} |
+void TabStrip::ThemeChanged() { |
+ LoadNewTabButtonImage(); |
+} |
+ |
/////////////////////////////////////////////////////////////////////////////// |
// TabStrip, TabStripModelObserver implementation: |
@@ -1075,23 +1088,7 @@ |
void TabStrip::Init() { |
model_->AddObserver(this); |
- newtab_button_ = new NewTabButton(this); |
- ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
- SkBitmap* bitmap; |
- |
- bitmap = rb.GetBitmapNamed(IDR_NEWTAB_BUTTON); |
- newtab_button_->SetImage(views::CustomButton::BS_NORMAL, bitmap); |
- newtab_button_->SetImage(views::CustomButton::BS_PUSHED, |
- rb.GetBitmapNamed(IDR_NEWTAB_BUTTON_P)); |
- newtab_button_->SetImage(views::CustomButton::BS_HOT, |
- rb.GetBitmapNamed(IDR_NEWTAB_BUTTON_H)); |
- |
- newtab_button_size_.SetSize(bitmap->width(), bitmap->height()); |
- actual_newtab_button_size_ = newtab_button_size_; |
- |
- newtab_button_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_NEWTAB)); |
- AddChildView(newtab_button_); |
- |
+ newtab_button_size_.SetSize(kNewTabButtonWidth, kNewTabButtonHeight); |
if (drop_indicator_width == 0) { |
// Direction doesn't matter, both images are the same size. |
SkBitmap* drop_image = GetDropArrowImage(true); |
@@ -1100,6 +1097,28 @@ |
} |
} |
+void TabStrip::LoadNewTabButtonImage() { |
+ ThemeProvider* tp = GetThemeProvider(); |
+ |
+ // If we don't have a theme provider yet, it means we do not have a |
+ // root view, and are therefore in a test. |
+ if (tp == NULL) |
+ tp = new views::DefaultThemeProvider(); |
+ |
+ SkBitmap* bitmap = tp->GetBitmapNamed(IDR_NEWTAB_BUTTON); |
+ SkColor color = tp->GetColor(BrowserThemeProvider::COLOR_BUTTON_BACKGROUND); |
+ SkBitmap* background = tp->GetBitmapNamed( |
+ IDR_THEME_WINDOW_CONTROL_BACKGROUND); |
+ |
+ newtab_button_->SetImage(views::CustomButton::BS_NORMAL, bitmap); |
+ newtab_button_->SetImage(views::CustomButton::BS_PUSHED, |
+ tp->GetBitmapNamed(IDR_NEWTAB_BUTTON_P)); |
+ newtab_button_->SetImage(views::CustomButton::BS_HOT, |
+ tp->GetBitmapNamed(IDR_NEWTAB_BUTTON_H)); |
+ newtab_button_->SetBackground(color, background, |
+ tp->GetBitmapNamed(IDR_NEWTAB_BUTTON_MASK)); |
+} |
+ |
Tab* TabStrip::GetTabAt(int index) const { |
DCHECK(index >= 0 && index < GetTabCount()); |
return tab_data_.at(index).tab; |