Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8869)

Unified Diff: chrome/browser/views/tabs/tab_strip.cc

Issue 150041: Theme window control buttons.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Theme window control buttons.... Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/views/tabs/tab_strip.h ('k') | chrome/test/test_browser_window.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « chrome/browser/views/tabs/tab_strip.h ('k') | chrome/test/test_browser_window.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698