diff options
author | mirandac@chromium.org <mirandac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-01 20:44:18 +0000 |
---|---|---|
committer | mirandac@chromium.org <mirandac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-01 20:44:18 +0000 |
commit | 8a2e67e58144d5aebdeb5174a8d9aa7983257d7f (patch) | |
tree | 84325dc2f645ee68f6135943ad0f8548590a3773 /chrome | |
parent | 71f9f4b92f528c8c2136e378603771b6b8dfd3d5 (diff) | |
download | chromium_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.png | bin | 0 -> 162 bytes | |||
-rw-r--r-- | chrome/app/theme/maximize_button_mask.png | bin | 0 -> 525 bytes | |||
-rw-r--r-- | chrome/app/theme/minimize_button_mask.png | bin | 0 -> 3602 bytes | |||
-rw-r--r-- | chrome/app/theme/newtab_button_mask.png | bin | 0 -> 285 bytes | |||
-rw-r--r-- | chrome/app/theme/restore_button_mask.png | bin | 0 -> 525 bytes | |||
-rw-r--r-- | chrome/app/theme/theme_resources.grd | 9 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view.cc | 1 | ||||
-rw-r--r-- | chrome/browser/views/frame/opaque_browser_frame_view.cc | 11 | ||||
-rw-r--r-- | chrome/browser/views/tabs/tab_strip.cc | 46 | ||||
-rw-r--r-- | chrome/browser/views/tabs/tab_strip.h | 8 |
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 Binary files differnew file mode 100644 index 0000000..dd49c54 --- /dev/null +++ b/chrome/app/theme/close_button_mask.png diff --git a/chrome/app/theme/maximize_button_mask.png b/chrome/app/theme/maximize_button_mask.png Binary files differnew file mode 100644 index 0000000..d5ea1fc --- /dev/null +++ b/chrome/app/theme/maximize_button_mask.png diff --git a/chrome/app/theme/minimize_button_mask.png b/chrome/app/theme/minimize_button_mask.png Binary files differnew file mode 100644 index 0000000..6a423e0 --- /dev/null +++ b/chrome/app/theme/minimize_button_mask.png diff --git a/chrome/app/theme/newtab_button_mask.png b/chrome/app/theme/newtab_button_mask.png Binary files differnew file mode 100644 index 0000000..f1a2b65 --- /dev/null +++ b/chrome/app/theme/newtab_button_mask.png diff --git a/chrome/app/theme/restore_button_mask.png b/chrome/app/theme/restore_button_mask.png Binary files differnew file mode 100644 index 0000000..d5ea1fc --- /dev/null +++ b/chrome/app/theme/restore_button_mask.png 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 |