diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-08 21:39:15 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-08 21:39:15 +0000 |
commit | 349e8d271a90f15a4746412c93706cc9f78e4520 (patch) | |
tree | bca936ec3c50aca8e796ccbbe892f6b5c58f88e6 /chrome | |
parent | 074c158550d1ed05a8d50950292f39f0d9f41147 (diff) | |
download | chromium_src-349e8d271a90f15a4746412c93706cc9f78e4520.zip chromium_src-349e8d271a90f15a4746412c93706cc9f78e4520.tar.gz chromium_src-349e8d271a90f15a4746412c93706cc9f78e4520.tar.bz2 |
ThemeBackground class.
This simplifies the background painting of components on the frame in various tab modes. Removed unused code in status_are_view, as it's always compiled with views now.
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/517076
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35828 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/chromeos/browser_extenders.cc | 7 | ||||
-rw-r--r-- | chrome/browser/chromeos/compact_navigation_bar.cc | 47 | ||||
-rw-r--r-- | chrome/browser/chromeos/compact_navigation_bar.h | 6 | ||||
-rwxr-xr-x | chrome/browser/chromeos/status_area_view.cc | 85 | ||||
-rw-r--r-- | chrome/browser/chromeos/status_area_view.h | 13 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_frame.h | 3 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_frame_gtk.cc | 4 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_frame_gtk.h | 1 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_frame_win.cc | 4 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_frame_win.h | 1 | ||||
-rw-r--r-- | chrome/browser/views/theme_background.cc | 47 | ||||
-rw-r--r-- | chrome/browser/views/theme_background.h | 40 | ||||
-rwxr-xr-x | chrome/chrome_browser.gypi | 4 |
13 files changed, 155 insertions, 107 deletions
diff --git a/chrome/browser/chromeos/browser_extenders.cc b/chrome/browser/chromeos/browser_extenders.cc index 578586e..510b787f 100644 --- a/chrome/browser/chromeos/browser_extenders.cc +++ b/chrome/browser/chromeos/browser_extenders.cc @@ -84,12 +84,11 @@ class NormalExtender : public BrowserExtender, Browser* browser = browser_view()->browser(); compact_location_bar_.reset( new chromeos::CompactLocationBar(browser_view())); - compact_navigation_bar_ = new chromeos::CompactNavigationBar(browser); + compact_navigation_bar_ = + new chromeos::CompactNavigationBar(browser_view()); browser_view()->AddChildView(compact_navigation_bar_); compact_navigation_bar_->Init(); - status_area_ = new chromeos::StatusAreaView( - browser, - browser_view()->GetWindow()->GetNativeWindow()); + status_area_ = new chromeos::StatusAreaView(browser_view()); browser_view()->AddChildView(status_area_); status_area_->Init(); diff --git a/chrome/browser/chromeos/compact_navigation_bar.cc b/chrome/browser/chromeos/compact_navigation_bar.cc index 8c92a2a..d6b137cc 100644 --- a/chrome/browser/chromeos/compact_navigation_bar.cc +++ b/chrome/browser/chromeos/compact_navigation_bar.cc @@ -20,6 +20,8 @@ #include "chrome/browser/tab_contents/tab_contents.h" #include "chrome/browser/view_ids.h" #include "chrome/browser/views/event_utils.h" +#include "chrome/browser/views/frame/browser_view.h" +#include "chrome/browser/views/theme_background.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" #include "views/controls/button/button_dropdown.h" @@ -47,8 +49,8 @@ static const int kURLPadding = 2; //////////////////////////////////////////////////////////////////////////////// // CompactNavigationBar public: -CompactNavigationBar::CompactNavigationBar(Browser* browser) - : browser_(browser), +CompactNavigationBar::CompactNavigationBar(BrowserView* browser_view) + : browser_view_(browser_view), initialized_(false) { SetFocusable(true); } @@ -61,14 +63,14 @@ CompactNavigationBar::~CompactNavigationBar() { void CompactNavigationBar::Init() { DCHECK(!initialized_); initialized_ = true; - - browser_->command_updater()->AddCommandObserver(IDC_BACK, this); - browser_->command_updater()->AddCommandObserver(IDC_FORWARD, this); + Browser* browser = browser_view_->browser(); + browser->command_updater()->AddCommandObserver(IDC_BACK, this); + browser->command_updater()->AddCommandObserver(IDC_FORWARD, this); back_menu_model_.reset(new BackForwardMenuModel( - browser_, BackForwardMenuModel::BACKWARD_MENU)); + browser, BackForwardMenuModel::BACKWARD_MENU)); forward_menu_model_.reset(new BackForwardMenuModel( - browser_, BackForwardMenuModel::FORWARD_MENU)); + browser, BackForwardMenuModel::FORWARD_MENU)); ResourceBundle& resource_bundle = ResourceBundle::GetSharedInstance(); @@ -104,8 +106,8 @@ void CompactNavigationBar::Init() { // URL bar construction. location_entry_.reset(new AutocompleteEditViewGtk( - this, browser_->toolbar_model(), browser_->profile(), - browser_->command_updater(), false, this)); + this, browser->toolbar_model(), browser->profile(), + browser->command_updater(), false, this)); location_entry_->Init(); gtk_widget_show_all(location_entry_->widget()); gtk_widget_hide(location_entry_->widget()); @@ -114,6 +116,8 @@ void CompactNavigationBar::Init() { AddChildView(location_entry_view_); location_entry_view_->set_focus_view(this); location_entry_view_->Attach(location_entry_->widget()); + + set_background(new ThemeBackground(browser_view_)); } void CompactNavigationBar::Focus() { @@ -176,19 +180,7 @@ void CompactNavigationBar::Layout() { } void CompactNavigationBar::Paint(gfx::Canvas* canvas) { - ThemeProvider* theme = browser_->profile()->GetThemeProvider(); - - // Fill the background. - int image_name; - if (browser_->window()->IsActive()) { - image_name = browser_->profile()->IsOffTheRecord() ? - IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME; - } else { - image_name = browser_->profile()->IsOffTheRecord() ? - IDR_THEME_FRAME_INCOGNITO_INACTIVE : IDR_THEME_FRAME_INACTIVE; - } - SkBitmap* background = theme->GetBitmapNamed(image_name); - canvas->TileImageInt(*background, 0, 0, width(), height()); + PaintBackground(canvas); // Draw a white box around the edit field so that it looks larger. This is // kind of what the default GTK location bar does, although they have a @@ -216,7 +208,7 @@ void CompactNavigationBar::ButtonPressed( location_entry_->RevertAll(); break; } - browser_->ExecuteCommandWithDisposition( + browser_view_->browser()->ExecuteCommandWithDisposition( id, event_utils::DispositionFromEventFlags(sender->mouse_event_flags())); } @@ -289,21 +281,22 @@ void CompactNavigationBar::EnabledStateChangedForCommand(int id, bool enabled) { void CompactNavigationBar::AddTabWithURL(const GURL& url, PageTransition::Type transition) { + Browser* browser = browser_view_->browser(); switch (StatusAreaView::GetOpenTabsMode()) { case StatusAreaView::OPEN_TABS_ON_LEFT: { // Add the new tab at the first non-pinned location. - int index = browser_->tabstrip_model()->IndexOfFirstNonPinnedTab(); - browser_->AddTabWithURL(url, GURL(), transition, + int index = browser->tabstrip_model()->IndexOfFirstNonPinnedTab(); + browser->AddTabWithURL(url, GURL(), transition, true, index, true, NULL); break; } case StatusAreaView::OPEN_TABS_CLOBBER: { - browser_->GetSelectedTabContents()->controller().LoadURL( + browser->GetSelectedTabContents()->controller().LoadURL( url, GURL(), transition); break; } case StatusAreaView::OPEN_TABS_ON_RIGHT: { - browser_->AddTabWithURL(url, GURL(), transition, true, -1, true, NULL); + browser->AddTabWithURL(url, GURL(), transition, true, -1, true, NULL); break; } } diff --git a/chrome/browser/chromeos/compact_navigation_bar.h b/chrome/browser/chromeos/compact_navigation_bar.h index ea6bdfa..fa44038 100644 --- a/chrome/browser/chromeos/compact_navigation_bar.h +++ b/chrome/browser/chromeos/compact_navigation_bar.h @@ -15,7 +15,7 @@ class AutocompleteEditViewGtk; class BackForwardMenuModel; -class Browser; +class BrowserView; namespace views { class ImageButton; @@ -33,7 +33,7 @@ class CompactNavigationBar : public views::View, public BubblePositioner, public CommandUpdater::CommandObserver { public: - explicit CompactNavigationBar(Browser* browser); + explicit CompactNavigationBar(BrowserView* browser_view); virtual ~CompactNavigationBar(); // Must be called before anything else, but after adding this view to the @@ -75,7 +75,7 @@ class CompactNavigationBar : public views::View, // controlled by the method |StatusAreaView::GetOpenTabsMode()|. void AddTabWithURL(const GURL& url, PageTransition::Type transition); - Browser* browser_; + BrowserView* browser_view_; bool initialized_; diff --git a/chrome/browser/chromeos/status_area_view.cc b/chrome/browser/chromeos/status_area_view.cc index c4edc79..63f8798 100755 --- a/chrome/browser/chromeos/status_area_view.cc +++ b/chrome/browser/chromeos/status_area_view.cc @@ -19,12 +19,9 @@ #include "chrome/browser/chromeos/network_menu_button.h" #include "chrome/browser/chromeos/power_menu_button.h" #include "chrome/browser/chromeos/status_area_button.h" -#if !defined(TOOLKIT_VIEWS) -#include "chrome/browser/gtk/browser_window_gtk.h" -#else -#include "chrome/browser/views/frame/browser_view.h" -#endif #include "chrome/browser/profile.h" +#include "chrome/browser/views/frame/browser_view.h" +#include "chrome/browser/views/theme_background.h" #include "chrome/common/pref_names.h" #include "chrome/common/pref_service.h" #include "grit/chromium_strings.h" @@ -32,6 +29,7 @@ #include "grit/theme_resources.h" #include "views/controls/menu/menu.h" #include "views/controls/menu/menu_2.h" +#include "views/window/window.h" namespace chromeos { @@ -58,12 +56,7 @@ class OptionsMenuModel : public menus::SimpleMenuModel, explicit OptionsMenuModel(Browser* browser) : SimpleMenuModel(this), browser_(browser) { -#if defined(TOOLKIT_VIEWS) AddItemWithStringId(IDC_COMPACT_NAVBAR, IDS_COMPACT_NAVBAR); -#else - AddItem(static_cast<int>(CREATE_NEW_WINDOW), - ASCIIToUTF16("New window")); -#endif AddSeparator(); AddItem(static_cast<int>(StatusAreaView::OPEN_TABS_ON_LEFT), @@ -90,21 +83,9 @@ class OptionsMenuModel : public menus::SimpleMenuModel, } virtual void ExecuteCommand(int command_id) { switch (command_id) { -#if defined(TOOLKIT_VIEWS) case IDC_COMPACT_NAVBAR: browser_->ExecuteCommand(command_id); break; -#else - case CREATE_NEW_WINDOW: - // Reach into the GTK browser window and enable the flag to create the - // next window as a compact nav one. - // TODO(brettw) this is an evil hack, and is here so this can be tested. - // Remove it eventually. - static_cast<BrowserWindowGtk*>(browser_->window())-> - set_next_window_should_use_compact_nav(); - browser_->ExecuteCommand(IDC_NEW_WINDOW); - break; -#endif case StatusAreaView::OPEN_TABS_ON_LEFT: case StatusAreaView::OPEN_TABS_CLOBBER: case StatusAreaView::OPEN_TABS_ON_RIGHT: @@ -126,10 +107,8 @@ class OptionsMenuModel : public menus::SimpleMenuModel, StatusAreaView::OpenTabsMode StatusAreaView::open_tabs_mode_ = StatusAreaView::OPEN_TABS_ON_LEFT; -StatusAreaView::StatusAreaView(Browser* browser, - gfx::NativeWindow window) - : browser_(browser), - window_(window), +StatusAreaView::StatusAreaView(BrowserView* browser_view) + : browser_view_(browser_view), clock_view_(NULL), language_view_(NULL), network_view_(NULL), @@ -138,14 +117,14 @@ StatusAreaView::StatusAreaView(Browser* browser, } void StatusAreaView::Init() { - ThemeProvider* theme = browser_->profile()->GetThemeProvider(); - + ThemeProvider* theme = browser_view_->frame()->GetThemeProviderForFrame(); + Browser* browser = browser_view_->browser(); // Language. - language_view_ = new LanguageMenuButton(browser_); + language_view_ = new LanguageMenuButton(browser); AddChildView(language_view_); // Clock. - clock_view_ = new ClockMenuButton(browser_); + clock_view_ = new ClockMenuButton(browser); AddChildView(clock_view_); // Battery. @@ -153,23 +132,21 @@ void StatusAreaView::Init() { AddChildView(battery_view_); // Network. - network_view_ = new NetworkMenuButton(window_); + network_view_ = new NetworkMenuButton( + browser_view_->GetWindow()->GetNativeWindow()); + AddChildView(network_view_); // Menu. menu_view_ = new StatusAreaButton(this); menu_view_->SetIcon(*theme->GetBitmapNamed(IDR_STATUSBAR_MENU)); AddChildView(menu_view_); + + set_background(new ThemeBackground(browser_view_)); } void StatusAreaView::Update() { -#if defined(TOOLKIT_VIEWS) - // We only turn on/off the menu for views because - // gtk version will not hide the toolbar in compact - // navigation bar mode. - menu_view_->SetVisible( - !browser_->window()->IsToolbarVisible()); -#endif + menu_view_->SetVisible(!browser_view_->IsToolbarVisible()); } gfx::Size StatusAreaView::GetPreferredSize() { @@ -214,26 +191,6 @@ void StatusAreaView::Layout() { } } -void StatusAreaView::Paint(gfx::Canvas* canvas) { - ThemeProvider* theme = browser_->profile()->GetThemeProvider(); - - // Fill the background. - int image_name; - if (browser_->window()->IsActive()) { - image_name = browser_->profile()->IsOffTheRecord() ? - IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME; - } else { - image_name = browser_->profile()->IsOffTheRecord() ? - IDR_THEME_FRAME_INCOGNITO_INACTIVE : IDR_THEME_FRAME_INACTIVE; - } - SkBitmap* background = theme->GetBitmapNamed(image_name); - canvas->TileImageInt( - *background, - 0, kCustomFrameBackgroundVerticalOffset, - 0, 0, - width(), height()); -} - // static StatusAreaView::OpenTabsMode StatusAreaView::GetOpenTabsMode() { return open_tabs_mode_; @@ -248,7 +205,7 @@ void StatusAreaView::CreateAppMenu() { if (app_menu_contents_.get()) return; - options_menu_contents_.reset(new OptionsMenuModel(browser_)); + options_menu_contents_.reset(new OptionsMenuModel(browser_view_->browser())); app_menu_contents_.reset(new menus::SimpleMenuModel(this)); app_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); @@ -291,14 +248,16 @@ void StatusAreaView::CreateAppMenu() { bool StatusAreaView::IsCommandIdChecked(int command_id) const { if (command_id == IDC_SHOW_BOOKMARK_BAR) - return browser_->profile()->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar); + return browser_view_->browser()->profile()->GetPrefs()->GetBoolean( + prefs::kShowBookmarkBar); return false; } bool StatusAreaView::IsCommandIdEnabled(int command_id) const { + Browser* browser = browser_view_->browser(); if (command_id == IDC_RESTORE_TAB) - return browser_->CanRestoreTab(); - return browser_->command_updater()->IsCommandEnabled(command_id); + return browser->CanRestoreTab(); + return browser->command_updater()->IsCommandEnabled(command_id); } bool StatusAreaView::GetAcceleratorForCommandId( @@ -308,7 +267,7 @@ bool StatusAreaView::GetAcceleratorForCommandId( } void StatusAreaView::ExecuteCommand(int command_id) { - browser_->ExecuteCommand(command_id); + browser_view_->browser()->ExecuteCommand(command_id); } void StatusAreaView::RunMenu(views::View* source, const gfx::Point& pt) { diff --git a/chrome/browser/chromeos/status_area_view.h b/chrome/browser/chromeos/status_area_view.h index ee3a172..12b7804 100644 --- a/chrome/browser/chromeos/status_area_view.h +++ b/chrome/browser/chromeos/status_area_view.h @@ -12,7 +12,7 @@ #include "views/controls/menu/menu_2.h" #include "views/view.h" -class Browser; +class BrowserView; namespace chromeos { @@ -34,9 +34,7 @@ class StatusAreaView : public views::View, OPEN_TABS_ON_RIGHT }; - // NOTE: this takes the handle to the window as browser->window() may not - // have been assigned yet. - StatusAreaView(Browser* browser, gfx::NativeWindow window); + explicit StatusAreaView(BrowserView* browser_view); virtual ~StatusAreaView() {} void Init(); @@ -48,7 +46,6 @@ class StatusAreaView : public views::View, // views::View* overrides. virtual gfx::Size GetPreferredSize(); virtual void Layout(); - virtual void Paint(gfx::Canvas* canvas); static OpenTabsMode GetOpenTabsMode(); static void SetOpenTabsMode(OpenTabsMode mode); @@ -67,11 +64,7 @@ class StatusAreaView : public views::View, virtual void RunMenu(views::View* source, const gfx::Point& pt); // The browser window that owns us. - Browser* browser_; - - // Browser's NativeWindow. See description above constructor as to why this - // is cached. - gfx::NativeWindow window_; + BrowserView* browser_view_; ClockMenuButton* clock_view_; LanguageMenuButton* language_view_; diff --git a/chrome/browser/views/frame/browser_frame.h b/chrome/browser/views/frame/browser_frame.h index efc64a1..08376a0d 100644 --- a/chrome/browser/views/frame/browser_frame.h +++ b/chrome/browser/views/frame/browser_frame.h @@ -63,6 +63,9 @@ class BrowserFrame { // if there are no themes applied on Vista, or if there are themes applied and // this browser window is an app or popup. virtual bool AlwaysUseNativeFrame() const = 0; + + // Returns the NonClientFrameView of this frame. + virtual views::View* GetFrameView() const = 0; }; #endif // CHROME_BROWSER_VIEWS_FRAME_BROWSER_FRAME_H_ diff --git a/chrome/browser/views/frame/browser_frame_gtk.cc b/chrome/browser/views/frame/browser_frame_gtk.cc index a496db9..dfd7717 100644 --- a/chrome/browser/views/frame/browser_frame_gtk.cc +++ b/chrome/browser/views/frame/browser_frame_gtk.cc @@ -124,6 +124,10 @@ bool BrowserFrameGtk::AlwaysUseNativeFrame() const { return false; } +views::View* BrowserFrameGtk::GetFrameView() const { + return browser_frame_view_; +} + ThemeProvider* BrowserFrameGtk::GetThemeProvider() const { return profile_->GetThemeProvider(); } diff --git a/chrome/browser/views/frame/browser_frame_gtk.h b/chrome/browser/views/frame/browser_frame_gtk.h index 76271d4..c045b3d 100644 --- a/chrome/browser/views/frame/browser_frame_gtk.h +++ b/chrome/browser/views/frame/browser_frame_gtk.h @@ -33,6 +33,7 @@ class BrowserFrameGtk : public BrowserFrame, virtual void ContinueDraggingDetachedTab(); virtual ThemeProvider* GetThemeProviderForFrame() const; virtual bool AlwaysUseNativeFrame() const; + virtual views::View* GetFrameView() const; // Overridden from views::Widget: virtual ThemeProvider* GetThemeProvider() const; diff --git a/chrome/browser/views/frame/browser_frame_win.cc b/chrome/browser/views/frame/browser_frame_win.cc index 1af9353..61aa053 100644 --- a/chrome/browser/views/frame/browser_frame_win.cc +++ b/chrome/browser/views/frame/browser_frame_win.cc @@ -107,6 +107,10 @@ bool BrowserFrameWin::AlwaysUseNativeFrame() const { win_util::ShouldUseVistaFrame()); } +views::View* BrowserFrameWin::GetFrameView() const { + return browser_frame_view_; +} + /////////////////////////////////////////////////////////////////////////////// // BrowserFrame, views::WindowWin overrides: diff --git a/chrome/browser/views/frame/browser_frame_win.h b/chrome/browser/views/frame/browser_frame_win.h index 94943e4..3482df9 100644 --- a/chrome/browser/views/frame/browser_frame_win.h +++ b/chrome/browser/views/frame/browser_frame_win.h @@ -44,6 +44,7 @@ class BrowserFrameWin : public BrowserFrame, public views::WindowWin { virtual void ContinueDraggingDetachedTab(); virtual ThemeProvider* GetThemeProviderForFrame() const; virtual bool AlwaysUseNativeFrame() const; + virtual views::View* GetFrameView() const; protected: // Overridden from views::WindowWin: diff --git a/chrome/browser/views/theme_background.cc b/chrome/browser/views/theme_background.cc new file mode 100644 index 0000000..e1dc104 --- /dev/null +++ b/chrome/browser/views/theme_background.cc @@ -0,0 +1,47 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/views/theme_background.h" + +#include "app/gfx/canvas.h" +#include "chrome/browser/browser_theme_provider.h" +#include "chrome/browser/profile.h" +#include "chrome/browser/views/frame/browser_view.h" +#include "grit/generated_resources.h" +#include "grit/theme_resources.h" +#include "views/view.h" + +ThemeBackground::ThemeBackground(BrowserView* browser_view) + : browser_view_(browser_view) { +} + +void ThemeBackground::Paint(gfx::Canvas* canvas, views::View* view) const { + int image_name; + Browser* browser = browser_view_->browser(); + if (browser->window()->IsActive()) { + image_name = browser->profile()->IsOffTheRecord() ? + IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME; + } else { + image_name = browser->profile()->IsOffTheRecord() ? + IDR_THEME_FRAME_INCOGNITO_INACTIVE : IDR_THEME_FRAME_INACTIVE; + } + ThemeProvider* theme = browser->profile()->GetThemeProvider(); + SkBitmap* background = theme->GetBitmapNamed(image_name); + + gfx::Point origin(0, 0); + views::View::ConvertPointToView(view, + browser_view_->frame()->GetFrameView(), + &origin); +#if defined(OS_CHROMEOS) + const int kCustomFrameBackgroundVerticalOffset = 15; + // TODO(oshima): Remove this once we fully migrated to views. + // See http://crbug.com/28580. + if (browser_view_->IsMaximized()) { + origin.Offset(0, kCustomFrameBackgroundVerticalOffset + 1); + } +#endif + canvas->TileImageInt(*background, + origin.x(), origin.y(), 0, 0, + view->width(), view->height()); +} diff --git a/chrome/browser/views/theme_background.h b/chrome/browser/views/theme_background.h new file mode 100644 index 0000000..31f568e --- /dev/null +++ b/chrome/browser/views/theme_background.h @@ -0,0 +1,40 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_VIEWS_THEME_BACKGROUND_H_ +#define CHROME_BROWSER_VIEWS_THEME_BACKGROUND_H_ + +#include "views/background.h" + +class BrowserView; + +namespace views { +class View; +}; + +//////////////////////////////////////////////////////////////////////////////// +// +// ThemeBackground class. +// +// A ThemeBackground is used to paint the background theme image in a +// view in such a way that it's consistent with the frame's theme +// image. It takes care of active/inactive state, incognito state and +// the offset from the frame view. +// +//////////////////////////////////////////////////////////////////////////////// +class ThemeBackground : public views::Background { + public: + explicit ThemeBackground(BrowserView* browser); + virtual ~ThemeBackground() {} + + // Overridden from views:;Background. + virtual void Paint(gfx::Canvas* canvas, views::View* view) const; + + private: + BrowserView* browser_view_; + + DISALLOW_COPY_AND_ASSIGN(ThemeBackground); +}; + +#endif // CHROME_BROWSER_VIEWS_THEME_BACKGROUND_H_ diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 16d33a9..6f22a6c 100755 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1827,6 +1827,8 @@ 'browser/views/tabs/tab_strip.cc', 'browser/views/tabs/tab_strip.h', 'browser/views/task_manager_view.cc', + 'browser/views/theme_background.cc', + 'browser/views/theme_background.h', 'browser/views/theme_helpers.cc', 'browser/views/theme_helpers.h', 'browser/views/theme_install_bubble_view.cc', @@ -2276,6 +2278,8 @@ ['include', '^browser/views/tabs/tab_strip.h'], ['include', '^browser/views/tabs/tab_strip_2.cc'], ['include', '^browser/views/tabs/tab_strip_2.h'], + ['include', '^browser/views/theme_background.cc'], + ['include', '^browser/views/theme_background.h'], ['include', '^browser/views/toolbar_view.cc'], ['include', '^browser/views/toolbar_view.h'], ['include', '^browser/window_sizer.cc'], |