Index: chrome/browser/views/frame/browser_frame.cc |
=================================================================== |
--- chrome/browser/views/frame/browser_frame.cc (revision 10646) |
+++ chrome/browser/views/frame/browser_frame.cc (working copy) |
@@ -2,47 +2,41 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/views/frame/aero_glass_frame.h" |
+#include "chrome/browser/views/frame/browser_frame.h" |
#include <dwmapi.h> |
#include "chrome/browser/browser_list.h" |
#include "chrome/browser/views/frame/browser_view.h" |
-#include "chrome/browser/views/frame/aero_glass_non_client_view.h" |
+#include "chrome/browser/views/frame/glass_browser_frame_view.h" |
+#include "chrome/browser/views/frame/opaque_browser_frame_view.h" |
#include "chrome/common/resource_bundle.h" |
+#include "chrome/common/win_util.h" |
#include "chrome/views/window_delegate.h" |
#include "grit/theme_resources.h" |
// static |
- |
static const int kClientEdgeThickness = 3; |
-HICON AeroGlassFrame::throbber_icons_[AeroGlassFrame::kThrobberIconCount]; |
- |
/////////////////////////////////////////////////////////////////////////////// |
-// AeroGlassFrame, public: |
+// BrowserFrame, public: |
-AeroGlassFrame::AeroGlassFrame(BrowserView* browser_view) |
+BrowserFrame::BrowserFrame(BrowserView* browser_view) |
: Window(browser_view), |
browser_view_(browser_view), |
- frame_initialized_(false), |
- throbber_running_(false), |
- throbber_frame_(0) { |
- non_client_view_ = new AeroGlassNonClientView(this, browser_view); |
+ frame_initialized_(false) { |
browser_view_->set_frame(this); |
- |
- if (window_delegate()->ShouldShowWindowIcon()) |
- InitThrobberIcons(); |
+ non_client_view_->SetFrameView(CreateFrameViewForWindow()); |
} |
-AeroGlassFrame::~AeroGlassFrame() { |
+BrowserFrame::~BrowserFrame() { |
} |
-void AeroGlassFrame::Init() { |
+void BrowserFrame::Init() { |
Window::Init(NULL, gfx::Rect()); |
} |
-int AeroGlassFrame::GetMinimizeButtonOffset() const { |
+int BrowserFrame::GetMinimizeButtonOffset() const { |
TITLEBARINFOEX titlebar_info; |
titlebar_info.cbSize = sizeof(TITLEBARINFOEX); |
SendMessage(GetHWND(), WM_GETTITLEBARINFOEX, 0, (WPARAM)&titlebar_info); |
@@ -54,84 +48,59 @@ |
return minimize_button_corner.x; |
} |
-/////////////////////////////////////////////////////////////////////////////// |
-// AeroGlassFrame, BrowserFrame implementation: |
- |
-gfx::Rect AeroGlassFrame::GetWindowBoundsForClientBounds( |
- const gfx::Rect& client_bounds) { |
- RECT rect = client_bounds.ToRECT(); |
- AdjustWindowRectEx(&rect, window_style(), FALSE, window_ex_style()); |
- return gfx::Rect(rect); |
+gfx::Rect BrowserFrame::GetBoundsForTabStrip(TabStrip* tabstrip) const { |
+ return browser_frame_view_->GetBoundsForTabStrip(tabstrip); |
} |
-gfx::Rect AeroGlassFrame::GetBoundsForTabStrip(TabStrip* tabstrip) const { |
- return GetAeroGlassNonClientView()->GetBoundsForTabStrip(tabstrip); |
+void BrowserFrame::UpdateThrobber(bool running) { |
+ browser_frame_view_->UpdateThrobber(running); |
} |
-void AeroGlassFrame::UpdateThrobber(bool running) { |
- if (throbber_running_) { |
- if (running) { |
- DisplayNextThrobberFrame(); |
- } else { |
- StopThrobber(); |
- } |
- } else if (running) { |
- StartThrobber(); |
- } |
-} |
- |
-views::Window* AeroGlassFrame::GetWindow() { |
- return this; |
-} |
- |
-const views::Window* AeroGlassFrame::GetWindow() const { |
- return this; |
-} |
- |
/////////////////////////////////////////////////////////////////////////////// |
-// AeroGlassFrame, views::WidgetWin overrides: |
+// BrowserFrame, views::WidgetWin overrides: |
-bool AeroGlassFrame::AcceleratorPressed(views::Accelerator* accelerator) { |
+bool BrowserFrame::AcceleratorPressed(views::Accelerator* accelerator) { |
return browser_view_->AcceleratorPressed(*accelerator); |
} |
-bool AeroGlassFrame::GetAccelerator(int cmd_id, |
- views::Accelerator* accelerator) { |
+bool BrowserFrame::GetAccelerator(int cmd_id, views::Accelerator* accelerator) { |
return browser_view_->GetAccelerator(cmd_id, accelerator); |
} |
-void AeroGlassFrame::OnInitMenuPopup(HMENU menu, UINT position, |
- BOOL is_system_menu) { |
- browser_view_->PrepareToRunSystemMenu(menu); |
+void BrowserFrame::OnEndSession(BOOL ending, UINT logoff) { |
+ BrowserList::WindowsSessionEnding(); |
} |
-void AeroGlassFrame::OnEnterSizeMove() { |
+void BrowserFrame::OnEnterSizeMove() { |
browser_view_->WindowMoveOrResizeStarted(); |
} |
-void AeroGlassFrame::OnEndSession(BOOL ending, UINT logoff) { |
- BrowserList::WindowsSessionEnding(); |
+void BrowserFrame::OnInitMenuPopup(HMENU menu, UINT position, |
+ BOOL is_system_menu) { |
+ browser_view_->PrepareToRunSystemMenu(menu); |
} |
-LRESULT AeroGlassFrame::OnMouseActivate(HWND window, UINT hittest_code, |
+LRESULT BrowserFrame::OnMouseActivate(HWND window, UINT hittest_code, |
UINT message) { |
return browser_view_->ActivateAppModalDialog() ? MA_NOACTIVATEANDEAT |
: MA_ACTIVATE; |
} |
-void AeroGlassFrame::OnMove(const CPoint& point) { |
+void BrowserFrame::OnMove(const CPoint& point) { |
browser_view_->WindowMoved(); |
} |
-void AeroGlassFrame::OnMoving(UINT param, const RECT* new_bounds) { |
+void BrowserFrame::OnMoving(UINT param, const RECT* new_bounds) { |
browser_view_->WindowMoved(); |
} |
-LRESULT AeroGlassFrame::OnNCActivate(BOOL active) { |
+LRESULT BrowserFrame::OnNCActivate(BOOL active) { |
if (browser_view_->ActivateAppModalDialog()) |
return TRUE; |
- if (!frame_initialized_) { |
+ // Perform first time initialization of the DWM frame insets, only if we're |
+ // using the native frame. |
+ if (non_client_view_->UseNativeFrame() && !frame_initialized_) { |
if (browser_view_->IsBrowserTypeNormal()) { |
::SetWindowPos(GetHWND(), NULL, 0, 0, 0, 0, |
SWP_NOSIZE | SWP_NOMOVE | SWP_FRAMECHANGED); |
@@ -140,14 +109,15 @@ |
frame_initialized_ = true; |
} |
browser_view_->ActivationChanged(!!active); |
- SetMsgHandled(false); |
- return TRUE; |
+ return Window::OnNCActivate(active); |
} |
-LRESULT AeroGlassFrame::OnNCCalcSize(BOOL mode, LPARAM l_param) { |
- if (!browser_view_->IsBrowserTypeNormal() || !mode) { |
- SetMsgHandled(FALSE); |
- return 0; |
+LRESULT BrowserFrame::OnNCCalcSize(BOOL mode, LPARAM l_param) { |
+ // We don't adjust the client area unless we're a tabbed browser window and |
+ // are using the native frame. |
+ if (!non_client_view_->UseNativeFrame() || |
+ !browser_view_->IsBrowserTypeNormal() || !mode) { |
+ return Window::OnNCCalcSize(mode, l_param); |
} |
// In fullscreen mode, we make the whole window client area. |
@@ -165,26 +135,42 @@ |
return 0; |
} |
-LRESULT AeroGlassFrame::OnNCHitTest(const CPoint& pt) { |
- LRESULT result; |
- if (DwmDefWindowProc(GetHWND(), WM_NCHITTEST, 0, MAKELPARAM(pt.x, pt.y), |
- &result)) { |
- return result; |
+LRESULT BrowserFrame::OnNCHitTest(const CPoint& pt) { |
+ // Only do DWM hit-testing when we are using the native frame. |
+ if (non_client_view_->UseNativeFrame()) { |
+ LRESULT result; |
+ if (DwmDefWindowProc(GetHWND(), WM_NCHITTEST, 0, MAKELPARAM(pt.x, pt.y), |
+ &result)) { |
+ return result; |
+ } |
} |
return Window::OnNCHitTest(pt); |
} |
/////////////////////////////////////////////////////////////////////////////// |
-// AeroGlassFrame, views::CustomFrameWindow overrides: |
+// BrowserFrame, views::CustomFrameWindow overrides: |
-int AeroGlassFrame::GetShowState() const { |
+int BrowserFrame::GetShowState() const { |
return browser_view_->GetShowState(); |
} |
+views::NonClientFrameView* BrowserFrame::CreateFrameViewForWindow() { |
+ if (non_client_view_->UseNativeFrame()) |
+ browser_frame_view_ = new GlassBrowserFrameView(this, browser_view_); |
+ else |
+ browser_frame_view_ = new OpaqueBrowserFrameView(this, browser_view_); |
+ return browser_frame_view_; |
+} |
+ |
+void BrowserFrame::UpdateFrameAfterFrameChange() { |
+ Window::UpdateFrameAfterFrameChange(); |
+ UpdateDWMFrame(); |
+} |
+ |
/////////////////////////////////////////////////////////////////////////////// |
-// AeroGlassFrame, private: |
+// BrowserFrame, private: |
-void AeroGlassFrame::UpdateDWMFrame() { |
+void BrowserFrame::UpdateDWMFrame() { |
// Nothing to do yet. |
if (!client_view()) |
return; |
@@ -203,41 +189,3 @@ |
DwmExtendFrameIntoClientArea(GetHWND(), &margins); |
} |
-AeroGlassNonClientView* AeroGlassFrame::GetAeroGlassNonClientView() const { |
- // We can safely assume that this conversion is true. |
- return static_cast<AeroGlassNonClientView*>(non_client_view_); |
-} |
- |
-void AeroGlassFrame::StartThrobber() { |
- if (!throbber_running_) { |
- throbber_running_ = true; |
- throbber_frame_ = 0; |
- InitThrobberIcons(); |
- ::SendMessage(GetHWND(), WM_SETICON, static_cast<WPARAM>(ICON_SMALL), |
- reinterpret_cast<LPARAM>(throbber_icons_[throbber_frame_])); |
- } |
-} |
- |
-void AeroGlassFrame::StopThrobber() { |
- if (throbber_running_) |
- throbber_running_ = false; |
-} |
- |
-void AeroGlassFrame::DisplayNextThrobberFrame() { |
- throbber_frame_ = (throbber_frame_ + 1) % kThrobberIconCount; |
- ::SendMessage(GetHWND(), WM_SETICON, static_cast<WPARAM>(ICON_SMALL), |
- reinterpret_cast<LPARAM>(throbber_icons_[throbber_frame_])); |
-} |
- |
-// static |
-void AeroGlassFrame::InitThrobberIcons() { |
- static bool initialized = false; |
- if (!initialized) { |
- ResourceBundle &rb = ResourceBundle::GetSharedInstance(); |
- for (int i = 0; i < kThrobberIconCount; ++i) { |
- throbber_icons_[i] = rb.LoadThemeIcon(IDR_THROBBER_01 + i); |
- DCHECK(throbber_icons_[i]); |
- } |
- initialized = true; |
- } |
-} |
Property changes on: chrome\browser\views\frame\browser_frame.cc |
___________________________________________________________________ |
Added: svn:mergeinfo |
Merged /branches/chrome_webkit_merge_branch/chrome/browser/views/frame/aero_glass_frame.cc:r69-2775 |