diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-10 01:26:14 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-10 01:26:14 +0000 |
commit | 19c996aa75ff2a0211fa8cb2e8d4ea0d9cdac80b (patch) | |
tree | 588055e2fa0feb04968f3bf4d6a92f30aee81163 /chrome | |
parent | c4c9f2cb04a7558f78b1339c37b1ca7a0d92570d (diff) | |
download | chromium_src-19c996aa75ff2a0211fa8cb2e8d4ea0d9cdac80b.zip chromium_src-19c996aa75ff2a0211fa8cb2e8d4ea0d9cdac80b.tar.gz chromium_src-19c996aa75ff2a0211fa8cb2e8d4ea0d9cdac80b.tar.bz2 |
Make loading animations on app windows not call WM_SETICON on every frame. Ow.
Review URL: http://codereview.chromium.org/7204
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3168 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/views/frame/aero_glass_frame.cc | 13 | ||||
-rw-r--r-- | chrome/browser/views/frame/aero_glass_frame.h | 4 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_frame.h | 3 | ||||
-rw-r--r-- | chrome/browser/views/frame/browser_view2.cc | 2 | ||||
-rw-r--r-- | chrome/browser/views/frame/opaque_frame.cc | 6 | ||||
-rw-r--r-- | chrome/browser/views/frame/opaque_frame.h | 1 |
6 files changed, 18 insertions, 11 deletions
diff --git a/chrome/browser/views/frame/aero_glass_frame.cc b/chrome/browser/views/frame/aero_glass_frame.cc index f951b3d..a87ed6c 100644 --- a/chrome/browser/views/frame/aero_glass_frame.cc +++ b/chrome/browser/views/frame/aero_glass_frame.cc @@ -67,15 +67,14 @@ gfx::Rect AeroGlassFrame::GetBoundsForTabStrip(TabStrip* tabstrip) const { return GetAeroGlassNonClientView()->GetBoundsForTabStrip(tabstrip); } -ChromeViews::Window* AeroGlassFrame::GetWindow() { - return this; +void AeroGlassFrame::UpdateThrobber() { + // On Vista, for now, we just update the window icon. Figure out something + // better here to fix http://crbug.com/3296 + UpdateWindowIcon(); } -/////////////////////////////////////////////////////////////////////////////// -// AeroGlassFrame, ChromeViews::Window overrides: - -void AeroGlassFrame::UpdateWindowIcon() { - Window::UpdateWindowIcon(); +ChromeViews::Window* AeroGlassFrame::GetWindow() { + return this; } /////////////////////////////////////////////////////////////////////////////// diff --git a/chrome/browser/views/frame/aero_glass_frame.h b/chrome/browser/views/frame/aero_glass_frame.h index 0f8ba97..26fc7b1 100644 --- a/chrome/browser/views/frame/aero_glass_frame.h +++ b/chrome/browser/views/frame/aero_glass_frame.h @@ -35,11 +35,9 @@ class AeroGlassFrame : public BrowserFrame, const gfx::Rect& client_bounds); virtual void SizeToContents(const gfx::Rect& contents_bounds) {} virtual gfx::Rect GetBoundsForTabStrip(TabStrip* tabstrip) const; + virtual void UpdateThrobber(); virtual ChromeViews::Window* GetWindow(); - // Overridden from ChromeViews::Window: - virtual void UpdateWindowIcon(); - // Overridden from ChromeViews::HWNDViewContainer: virtual bool AcceleratorPressed(ChromeViews::Accelerator* accelerator); virtual bool GetAccelerator(int cmd_id, diff --git a/chrome/browser/views/frame/browser_frame.h b/chrome/browser/views/frame/browser_frame.h index db87a71..e60cdca 100644 --- a/chrome/browser/views/frame/browser_frame.h +++ b/chrome/browser/views/frame/browser_frame.h @@ -37,6 +37,9 @@ class BrowserFrame { // TabStrip. The coordinate system is that of the window's client area. virtual gfx::Rect GetBoundsForTabStrip(TabStrip* tabstrip) const = 0; + // Updates the current frame of the Throbber animation, if applicable. + virtual void UpdateThrobber() = 0; + // Returns the ChromeViews::Window associated with this frame. virtual ChromeViews::Window* GetWindow() = 0; diff --git a/chrome/browser/views/frame/browser_view2.cc b/chrome/browser/views/frame/browser_view2.cc index a1451ed..6759c67 100644 --- a/chrome/browser/views/frame/browser_view2.cc +++ b/chrome/browser/views/frame/browser_view2.cc @@ -398,7 +398,7 @@ void BrowserView2::SetAcceleratorTable( void BrowserView2::ValidateThrobber() { if (ShouldShowWindowIcon()) - frame_->GetWindow()->UpdateWindowIcon(); + frame_->UpdateThrobber(); } gfx::Rect BrowserView2::GetNormalBounds() { diff --git a/chrome/browser/views/frame/opaque_frame.cc b/chrome/browser/views/frame/opaque_frame.cc index ebc9b7d..2b32050 100644 --- a/chrome/browser/views/frame/opaque_frame.cc +++ b/chrome/browser/views/frame/opaque_frame.cc @@ -42,6 +42,12 @@ gfx::Rect OpaqueFrame::GetBoundsForTabStrip(TabStrip* tabstrip) const { return GetOpaqueNonClientView()->GetBoundsForTabStrip(tabstrip); } +void OpaqueFrame::UpdateThrobber() { + // The throbber doesn't run in the Windows TaskBar, so we just update the + // non-client view. Updating the taskbar is muy expensivo. + GetOpaqueNonClientView()->UpdateWindowIcon(); +} + ChromeViews::Window* OpaqueFrame::GetWindow() { return this; } diff --git a/chrome/browser/views/frame/opaque_frame.h b/chrome/browser/views/frame/opaque_frame.h index 5bc1718..20c8568 100644 --- a/chrome/browser/views/frame/opaque_frame.h +++ b/chrome/browser/views/frame/opaque_frame.h @@ -35,6 +35,7 @@ class OpaqueFrame : public BrowserFrame, const gfx::Rect& client_bounds); virtual void SizeToContents(const gfx::Rect& contents_bounds); virtual gfx::Rect GetBoundsForTabStrip(TabStrip* tabstrip) const; + virtual void UpdateThrobber(); virtual ChromeViews::Window* GetWindow(); // Overridden from ChromeViews::CustomFrameWindow: |