Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6524)

Unified Diff: chrome/browser/ui/views/frame/browser_frame_win.cc

Issue 7015051: Re-land: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame_win.h ('k') | chrome/browser/ui/views/frame/browser_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
+}
+
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame_win.h ('k') | chrome/browser/ui/views/frame/browser_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698