summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authormirandac@chromium.org <mirandac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-01 20:44:18 +0000
committermirandac@chromium.org <mirandac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-01 20:44:18 +0000
commit8a2e67e58144d5aebdeb5174a8d9aa7983257d7f (patch)
tree84325dc2f645ee68f6135943ad0f8548590a3773 /chrome
parent71f9f4b92f528c8c2136e378603771b6b8dfd3d5 (diff)
downloadchromium_src-8a2e67e58144d5aebdeb5174a8d9aa7983257d7f.zip
chromium_src-8a2e67e58144d5aebdeb5174a8d9aa7983257d7f.tar.gz
chromium_src-8a2e67e58144d5aebdeb5174a8d9aa7983257d7f.tar.bz2
Theme window control buttons.
BUG= http://crbug.com/14579 TEST= Install a theme with themed window control buttons. Observe that WCB's are themed. Review URL: http://codereview.chromium.org/150041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19758 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/app/theme/close_button_mask.pngbin0 -> 162 bytes
-rw-r--r--chrome/app/theme/maximize_button_mask.pngbin0 -> 525 bytes
-rw-r--r--chrome/app/theme/minimize_button_mask.pngbin0 -> 3602 bytes
-rw-r--r--chrome/app/theme/newtab_button_mask.pngbin0 -> 285 bytes
-rw-r--r--chrome/app/theme/restore_button_mask.pngbin0 -> 525 bytes
-rw-r--r--chrome/app/theme/theme_resources.grd9
-rw-r--r--chrome/browser/views/frame/browser_view.cc1
-rw-r--r--chrome/browser/views/frame/opaque_browser_frame_view.cc11
-rw-r--r--chrome/browser/views/tabs/tab_strip.cc46
-rw-r--r--chrome/browser/views/tabs/tab_strip.h8
10 files changed, 57 insertions, 18 deletions
diff --git a/chrome/app/theme/close_button_mask.png b/chrome/app/theme/close_button_mask.png
new file mode 100644
index 0000000..dd49c54
--- /dev/null
+++ b/chrome/app/theme/close_button_mask.png
Binary files differ
diff --git a/chrome/app/theme/maximize_button_mask.png b/chrome/app/theme/maximize_button_mask.png
new file mode 100644
index 0000000..d5ea1fc
--- /dev/null
+++ b/chrome/app/theme/maximize_button_mask.png
Binary files differ
diff --git a/chrome/app/theme/minimize_button_mask.png b/chrome/app/theme/minimize_button_mask.png
new file mode 100644
index 0000000..6a423e0
--- /dev/null
+++ b/chrome/app/theme/minimize_button_mask.png
Binary files differ
diff --git a/chrome/app/theme/newtab_button_mask.png b/chrome/app/theme/newtab_button_mask.png
new file mode 100644
index 0000000..f1a2b65
--- /dev/null
+++ b/chrome/app/theme/newtab_button_mask.png
Binary files differ
diff --git a/chrome/app/theme/restore_button_mask.png b/chrome/app/theme/restore_button_mask.png
new file mode 100644
index 0000000..d5ea1fc
--- /dev/null
+++ b/chrome/app/theme/restore_button_mask.png
Binary files differ
diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd
index 3501fa0..9d234f1 100644
--- a/chrome/app/theme/theme_resources.grd
+++ b/chrome/app/theme/theme_resources.grd
@@ -284,13 +284,20 @@
<include name="IDR_THEME_FRAME_OVERLAY" file="notused.png" type="BINDATA" />
<include name="IDR_THEME_BUTTON_BACKGROUND" file="notused.png" type="BINDATA" />
<include name="IDR_THEME_NTP_ATTRIBUTION" file="notused.png" type="BINDATA" />
+ <include name="IDR_THEME_WINDOW_CONTROL_BACKGROUND" file="notused.png" type="BINDATA" />
<include name="IDR_FORWARD_MASK" file="forward_mask.png" type="BINDATA" />
<include name="IDR_BACK_MASK" file="back_mask.png" type="BINDATA" />
<include name="IDR_BUTTON_MASK" file="button_mask.png" type="BINDATA" />
<include name="IDR_STAR_MASK" file="star_mask.png" type="BINDATA" />
<include name="IDR_GO_MASK" file="go_mask.png" type="BINDATA" />
-
+
+ <include name="IDR_NEWTAB_BUTTON_MASK" file="newtab_button_mask.png" type="BINDATA" />
+ <include name="IDR_CLOSE_BUTTON_MASK" file="close_button_mask.png" type="BINDATA" />
+ <include name="IDR_RESTORE_BUTTON_MASK" file="restore_button_mask.png" type="BINDATA" />
+ <include name="IDR_MINIMIZE_BUTTON_MASK" file="minimize_button_mask.png" type="BINDATA" />
+ <include name="IDR_MAXIMIZE_BUTTON_MASK" file="maximize_button_mask.png" type="BINDATA" />
+
<if expr="pp_ifdef('_google_chrome')">
<include name="IDR_ABOUT_BACKGROUND" file="google_chrome/about_background.png" type="BINDATA" />
<include name="IDR_ABOUT_BACKGROUND_RTL" file="google_chrome/about_background_rtl.png" type="BINDATA" />
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index ed4617f..921428f9 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -1399,6 +1399,7 @@ void BrowserView::Init() {
tabstrip_ = new TabStrip(browser_->tabstrip_model());
tabstrip_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_TABSTRIP));
AddChildView(tabstrip_);
+ tabstrip_->InitTabStripButtons();
frame_->TabStripCreated(tabstrip_);
toolbar_ = new ToolbarView(browser_.get());
diff --git a/chrome/browser/views/frame/opaque_browser_frame_view.cc b/chrome/browser/views/frame/opaque_browser_frame_view.cc
index bcfe6c0..5c941bd 100644
--- a/chrome/browser/views/frame/opaque_browser_frame_view.cc
+++ b/chrome/browser/views/frame/opaque_browser_frame_view.cc
@@ -117,6 +117,9 @@ OpaqueBrowserFrameView::OpaqueBrowserFrameView(BrowserFrame* frame,
InitClass();
ThemeProvider* tp = frame_->GetThemeProviderForFrame();
+ SkColor color = tp->GetColor(BrowserThemeProvider::COLOR_BUTTON_BACKGROUND);
+ SkBitmap* background =
+ tp->GetBitmapNamed(IDR_THEME_WINDOW_CONTROL_BACKGROUND);
minimize_button_->SetImage(
views::CustomButton::BS_NORMAL,
@@ -127,6 +130,8 @@ OpaqueBrowserFrameView::OpaqueBrowserFrameView(BrowserFrame* frame,
minimize_button_->SetImage(
views::CustomButton::BS_PUSHED,
tp->GetBitmapNamed(IDR_MINIMIZE_P));
+ minimize_button_->SetBackground(color, background,
+ tp->GetBitmapNamed(IDR_MINIMIZE_BUTTON_MASK));
minimize_button_->SetAccessibleName(
l10n_util::GetString(IDS_ACCNAME_MINIMIZE));
AddChildView(minimize_button_);
@@ -140,6 +145,8 @@ OpaqueBrowserFrameView::OpaqueBrowserFrameView(BrowserFrame* frame,
maximize_button_->SetImage(
views::CustomButton::BS_PUSHED,
tp->GetBitmapNamed(IDR_MAXIMIZE_P));
+ maximize_button_->SetBackground(color, background,
+ tp->GetBitmapNamed(IDR_MAXIMIZE_BUTTON_MASK));
maximize_button_->SetAccessibleName(
l10n_util::GetString(IDS_ACCNAME_MAXIMIZE));
AddChildView(maximize_button_);
@@ -153,6 +160,8 @@ OpaqueBrowserFrameView::OpaqueBrowserFrameView(BrowserFrame* frame,
restore_button_->SetImage(
views::CustomButton::BS_PUSHED,
tp->GetBitmapNamed(IDR_RESTORE_P));
+ restore_button_->SetBackground(color, background,
+ tp->GetBitmapNamed(IDR_RESTORE_BUTTON_MASK));
restore_button_->SetAccessibleName(
l10n_util::GetString(IDS_ACCNAME_RESTORE));
AddChildView(restore_button_);
@@ -166,6 +175,8 @@ OpaqueBrowserFrameView::OpaqueBrowserFrameView(BrowserFrame* frame,
close_button_->SetImage(
views::CustomButton::BS_PUSHED,
tp->GetBitmapNamed(IDR_CLOSE_P));
+ close_button_->SetBackground(color, background,
+ tp->GetBitmapNamed(IDR_CLOSE_BUTTON_MASK));
close_button_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_CLOSE));
AddChildView(close_button_);
diff --git a/chrome/browser/views/tabs/tab_strip.cc b/chrome/browser/views/tabs/tab_strip.cc
index d9e7952..57bfc1a 100644
--- a/chrome/browser/views/tabs/tab_strip.cc
+++ b/chrome/browser/views/tabs/tab_strip.cc
@@ -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"
@@ -595,6 +596,13 @@ void TabStrip::SetBackgroundOffset(gfx::Point offset) {
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 +776,10 @@ views::View* TabStrip::GetViewForPoint(const gfx::Point& point) {
return this;
}
+void TabStrip::ThemeChanged() {
+ LoadNewTabButtonImage();
+}
+
///////////////////////////////////////////////////////////////////////////////
// TabStrip, TabStripModelObserver implementation:
@@ -1075,22 +1087,6 @@ void TabStrip::DidProcessEvent(GdkEvent* event) {
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_);
if (drop_indicator_width == 0) {
// Direction doesn't matter, both images are the same size.
@@ -1100,6 +1096,24 @@ void TabStrip::Init() {
}
}
+void TabStrip::LoadNewTabButtonImage() {
+ ThemeProvider* tp = GetThemeProvider();
+
+ 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));
+ newtab_button_size_.SetSize(bitmap->width(), bitmap->height());
+}
+
Tab* TabStrip::GetTabAt(int index) const {
DCHECK(index >= 0 && index < GetTabCount());
return tab_data_.at(index).tab;
diff --git a/chrome/browser/views/tabs/tab_strip.h b/chrome/browser/views/tabs/tab_strip.h
index 71f0301..7ad8c4a 100644
--- a/chrome/browser/views/tabs/tab_strip.h
+++ b/chrome/browser/views/tabs/tab_strip.h
@@ -89,6 +89,9 @@ class TabStrip : public views::View,
// Set the background offset used by inactive tabs to match the frame image.
void SetBackgroundOffset(gfx::Point offset);
+ // Create the new tab button.
+ void InitTabStripButtons();
+
// views::View overrides:
virtual void PaintChildren(gfx::Canvas* canvas);
virtual views::View* GetViewByID(int id) const;
@@ -104,6 +107,7 @@ class TabStrip : public views::View,
virtual bool GetAccessibleName(std::wstring* name);
virtual void SetAccessibleName(const std::wstring& name);
virtual views::View* GetViewForPoint(const gfx::Point& point);
+ virtual void ThemeChanged();
protected:
// TabStripModelObserver implementation:
@@ -166,6 +170,9 @@ class TabStrip : public views::View,
TabStrip();
void Init();
+ // Set the images for the new tab button.
+ void LoadNewTabButtonImage();
+
// Retrieves the Tab at the specified index. Take care in using this, you may
// need to use GetTabAtAdjustForAnimation.
Tab* GetTabAt(int index) const;
@@ -303,7 +310,6 @@ class TabStrip : public views::View,
// The "New Tab" button.
views::ImageButton* newtab_button_;
gfx::Size newtab_button_size_;
- gfx::Size actual_newtab_button_size_;
// The current widths of various types of tabs. We save these so that, as
// users close tabs while we're holding them at the same size, we can lay out