| Index: chrome/browser/ui/views/frame/browser_frame_win.cc
|
| ===================================================================
|
| --- chrome/browser/ui/views/frame/browser_frame_win.cc (revision 85284)
|
| +++ chrome/browser/ui/views/frame/browser_frame_win.cc (working copy)
|
| @@ -10,19 +10,13 @@
|
| #include <set>
|
|
|
| #include "chrome/browser/accessibility/browser_accessibility_state.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/themes/theme_service.h"
|
| -#include "chrome/browser/themes/theme_service_factory.h"
|
| #include "chrome/browser/ui/browser_list.h"
|
| -#include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h"
|
| #include "chrome/browser/ui/views/frame/browser_view.h"
|
| -#include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
|
| #include "grit/theme_resources.h"
|
| #include "ui/gfx/font.h"
|
| #include "views/screen.h"
|
| -#include "views/widget/root_view.h"
|
| -#include "views/widget/widget_win.h"
|
| -#include "views/window/window_win.h"
|
| +#include "views/window/non_client_view.h"
|
| +#include "views/window/window.h"
|
|
|
| // static
|
| static const int kClientEdgeThickness = 3;
|
| @@ -33,26 +27,14 @@
|
| // If not -1, windows are shown with this state.
|
| static int explicit_show_state = -1;
|
|
|
| -// static (Factory method.)
|
| -BrowserFrame* BrowserFrame::Create(BrowserView* browser_view,
|
| - Profile* profile) {
|
| - BrowserFrame* frame = new BrowserFrameWin(browser_view, profile);
|
| -
|
| - views::Window::InitParams params(browser_view);
|
| - frame->GetWindow()->InitWindow(params);
|
| - return frame;
|
| -}
|
| -
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // BrowserFrameWin, public:
|
|
|
| -BrowserFrameWin::BrowserFrameWin(BrowserView* browser_view, Profile* profile)
|
| - : BrowserFrame(browser_view),
|
| +BrowserFrameWin::BrowserFrameWin(BrowserFrame* browser_frame,
|
| + BrowserView* browser_view)
|
| + : views::WindowWin(browser_frame),
|
| browser_view_(browser_view),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(delegate_(this)) {
|
| - set_native_browser_frame(this);
|
| - browser_view_->set_frame(this);
|
| - non_client_view()->SetFrameView(CreateFrameViewForWindow());
|
| + browser_frame_(browser_frame) {
|
| // Don't focus anything on creation, selecting a tab will set the focus.
|
| set_focus_on_creation(false);
|
| }
|
| @@ -82,7 +64,7 @@
|
| gfx::Insets BrowserFrameWin::GetClientAreaInsets() const {
|
| // Use the default client insets for an opaque frame or a glass popup/app
|
| // frame.
|
| - if (!non_client_view()->UseNativeFrame() ||
|
| + if (!GetWindow()->non_client_view()->UseNativeFrame() ||
|
| !browser_view_->IsBrowserTypeNormal()) {
|
| return WindowWin::GetClientAreaInsets();
|
| }
|
| @@ -97,9 +79,11 @@
|
| return gfx::Insets(0, border_thickness, border_thickness, border_thickness);
|
| }
|
|
|
| -bool BrowserFrameWin::GetAccelerator(int cmd_id,
|
| - ui::Accelerator* accelerator) {
|
| - return browser_view_->GetAccelerator(cmd_id, accelerator);
|
| +void BrowserFrameWin::UpdateFrameAfterFrameChange() {
|
| + // We need to update the glass region on or off before the base class adjusts
|
| + // the window region.
|
| + UpdateDWMFrame();
|
| + WindowWin::UpdateFrameAfterFrameChange();
|
| }
|
|
|
| void BrowserFrameWin::OnEndSession(BOOL ending, UINT logoff) {
|
| @@ -125,51 +109,16 @@
|
| // SWP_SHOWWINDOW, however callers typically are careful about not specifying
|
| // this flag unless necessary to avoid flicker.
|
| if (window_pos->flags & SWP_SHOWWINDOW) {
|
| - non_client_view()->Layout();
|
| - non_client_view()->SchedulePaint();
|
| + GetWindow()->non_client_view()->Layout();
|
| + GetWindow()->non_client_view()->SchedulePaint();
|
| }
|
| }
|
|
|
| -ThemeProvider* BrowserFrameWin::GetThemeProvider() const {
|
| - return ThemeServiceFactory::GetForProfile(
|
| - browser_view_->browser()->profile());
|
| -}
|
| -
|
| void BrowserFrameWin::OnScreenReaderDetected() {
|
| BrowserAccessibilityState::GetInstance()->OnScreenReaderDetected();
|
| WindowWin::OnScreenReaderDetected();
|
| }
|
|
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// BrowserFrameWin, views::Window overrides:
|
| -
|
| -void BrowserFrameWin::Activate() {
|
| - // When running under remote desktop, if the remote desktop client is not
|
| - // active on the users desktop, then none of the windows contained in the
|
| - // remote desktop will be activated. However, WindowWin::Activate will still
|
| - // bring this browser window to the foreground. We explicitly set ourselves
|
| - // as the last active browser window to ensure that we get treated as such by
|
| - // the rest of Chrome.
|
| - BrowserList::SetLastActive(browser_view_->browser());
|
| -
|
| - WindowWin::Activate();
|
| -}
|
| -
|
| -void BrowserFrameWin::UpdateFrameAfterFrameChange() {
|
| - // We need to update the glass region on or off before the base class adjusts
|
| - // the window region.
|
| - UpdateDWMFrame();
|
| - WindowWin::UpdateFrameAfterFrameChange();
|
| -}
|
| -
|
| -views::RootView* BrowserFrameWin::CreateRootView() {
|
| - return delegate_->DelegateCreateRootView();
|
| -}
|
| -
|
| -views::NonClientFrameView* BrowserFrameWin::CreateFrameViewForWindow() {
|
| - return delegate_->DelegateCreateFrameViewForWindow();
|
| -}
|
| -
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // BrowserFrameWin, NativeBrowserFrame implementation:
|
|
|
| @@ -181,12 +130,6 @@
|
| return this;
|
| }
|
|
|
| -BrowserNonClientFrameView* BrowserFrameWin::CreateBrowserNonClientFrameView() {
|
| - if (AlwaysUseNativeFrame())
|
| - return new GlassBrowserFrameView(this, browser_view_);
|
| - return browser::CreateBrowserNonClientFrameView(this, browser_view_);
|
| -}
|
| -
|
| int BrowserFrameWin::GetMinimizeButtonOffset() const {
|
| TITLEBARINFOEX titlebar_info;
|
| titlebar_info.cbSize = sizeof(TITLEBARINFOEX);
|
| @@ -199,36 +142,7 @@
|
| return minimize_button_corner.x;
|
| }
|
|
|
| -ui::ThemeProvider* BrowserFrameWin::GetThemeProviderForFrame() const {
|
| - // This is implemented for a different interface than GetThemeProvider is,
|
| - // but they mean the same things.
|
| - return GetThemeProvider();
|
| -}
|
| -
|
| -bool BrowserFrameWin::AlwaysUseNativeFrame() const {
|
| - // App panel windows draw their own frame.
|
| - if (browser_view_->IsBrowserTypePanel() && browser_view_->IsBrowserTypeApp())
|
| - return false;
|
| -
|
| - // We don't theme popup or app windows, so regardless of whether or not a
|
| - // theme is active for normal browser windows, we don't want to use the custom
|
| - // frame for popups/apps.
|
| - if (!browser_view_->IsBrowserTypeNormal() &&
|
| - views::WidgetWin::IsAeroGlassEnabled())
|
| - return true;
|
| -
|
| - // Otherwise, we use the native frame when we're told we should by the theme
|
| - // provider (e.g. no custom theme is active).
|
| - return GetThemeProvider()->ShouldUseNativeFrame();
|
| -}
|
| -
|
| void BrowserFrameWin::TabStripDisplayModeChanged() {
|
| - if (GetRootView()->has_children()) {
|
| - // Make sure the child of the root view gets Layout again.
|
| - GetRootView()->GetChildViewAt(0)->InvalidateLayout();
|
| - }
|
| - GetRootView()->Layout();
|
| -
|
| UpdateDWMFrame();
|
| }
|
|
|
| @@ -237,7 +151,7 @@
|
|
|
| void BrowserFrameWin::UpdateDWMFrame() {
|
| // Nothing to do yet, or we're not showing a DWM frame.
|
| - if (!client_view() || !AlwaysUseNativeFrame())
|
| + if (!GetWindow()->client_view() || !browser_frame_->AlwaysUseNativeFrame())
|
| return;
|
|
|
| MARGINS margins = { 0 };
|
| @@ -255,7 +169,7 @@
|
| // borders.
|
| if (!browser_view_->IsFullscreen()) {
|
| gfx::Rect tabstrip_bounds(
|
| - GetBoundsForTabStrip(browser_view_->tabstrip()));
|
| + browser_frame_->GetBoundsForTabStrip(browser_view_->tabstrip()));
|
| margins.cyTopHeight = (browser_view_->UseVerticalTabs() ?
|
| tabstrip_bounds.y() : tabstrip_bounds.bottom()) + kDWMFrameTopOffset;
|
| }
|
| @@ -275,3 +189,13 @@
|
| return *title_font;
|
| }
|
|
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// NativeBrowserFrame, public:
|
| +
|
| +// static
|
| +NativeBrowserFrame* NativeBrowserFrame::CreateNativeBrowserFrame(
|
| + BrowserFrame* browser_frame,
|
| + BrowserView* browser_view) {
|
| + return new BrowserFrameWin(browser_frame, browser_view);
|
| +}
|
| +
|
|
|