summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-10-10 01:26:14 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-10-10 01:26:14 +0000
commit19c996aa75ff2a0211fa8cb2e8d4ea0d9cdac80b (patch)
tree588055e2fa0feb04968f3bf4d6a92f30aee81163 /chrome
parentc4c9f2cb04a7558f78b1339c37b1ca7a0d92570d (diff)
downloadchromium_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.cc13
-rw-r--r--chrome/browser/views/frame/aero_glass_frame.h4
-rw-r--r--chrome/browser/views/frame/browser_frame.h3
-rw-r--r--chrome/browser/views/frame/browser_view2.cc2
-rw-r--r--chrome/browser/views/frame/opaque_frame.cc6
-rw-r--r--chrome/browser/views/frame/opaque_frame.h1
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: