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

Side by Side Diff: chrome/browser/ui/views/frame/browser_frame_win.cc

Issue 6975037: Revert 85666 - Consolidate ShouldUseNativeFrame/AlwaysUseNativeFrame/UseNativeFrame spaghetti. (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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/frame/browser_frame_win.h" 5 #include "chrome/browser/ui/views/frame/browser_frame_win.h"
6 6
7 #include <dwmapi.h> 7 #include <dwmapi.h>
8 #include <shellapi.h> 8 #include <shellapi.h>
9 9
10 #include <set> 10 #include <set>
11 11
12 #include "chrome/browser/accessibility/browser_accessibility_state.h" 12 #include "chrome/browser/accessibility/browser_accessibility_state.h"
13 #include "chrome/browser/ui/browser_list.h" 13 #include "chrome/browser/ui/browser_list.h"
14 #include "chrome/browser/ui/views/frame/browser_view.h" 14 #include "chrome/browser/ui/views/frame/browser_view.h"
15 #include "grit/theme_resources.h" 15 #include "grit/theme_resources.h"
16 #include "ui/base/theme_provider.h"
17 #include "ui/gfx/font.h" 16 #include "ui/gfx/font.h"
18 #include "views/screen.h" 17 #include "views/screen.h"
19 #include "views/window/non_client_view.h" 18 #include "views/window/non_client_view.h"
20 #include "views/window/window.h" 19 #include "views/window/window.h"
21 20
22 // static 21 // static
23 static const int kClientEdgeThickness = 3; 22 static const int kClientEdgeThickness = 3;
24 static const int kTabDragWindowAlpha = 200; 23 static const int kTabDragWindowAlpha = 200;
25 // We need to offset the DWMFrame into the toolbar so that the blackness 24 // We need to offset the DWMFrame into the toolbar so that the blackness
26 // doesn't show up on our rounded corners. 25 // doesn't show up on our rounded corners.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 STARTUPINFO si = {0}; 57 STARTUPINFO si = {0};
59 si.cb = sizeof(si); 58 si.cb = sizeof(si);
60 si.dwFlags = STARTF_USESHOWWINDOW; 59 si.dwFlags = STARTF_USESHOWWINDOW;
61 GetStartupInfo(&si); 60 GetStartupInfo(&si);
62 return si.wShowWindow; 61 return si.wShowWindow;
63 } 62 }
64 63
65 gfx::Insets BrowserFrameWin::GetClientAreaInsets() const { 64 gfx::Insets BrowserFrameWin::GetClientAreaInsets() const {
66 // Use the default client insets for an opaque frame or a glass popup/app 65 // Use the default client insets for an opaque frame or a glass popup/app
67 // frame. 66 // frame.
68 if (!GetWindow()->ShouldUseNativeFrame() || 67 if (!GetWindow()->non_client_view()->UseNativeFrame() ||
69 !browser_view_->IsBrowserTypeNormal()) { 68 !browser_view_->IsBrowserTypeNormal()) {
70 return WindowWin::GetClientAreaInsets(); 69 return WindowWin::GetClientAreaInsets();
71 } 70 }
72 71
73 int border_thickness = GetSystemMetrics(SM_CXSIZEFRAME); 72 int border_thickness = GetSystemMetrics(SM_CXSIZEFRAME);
74 // In fullscreen mode, we have no frame. In restored mode, we draw our own 73 // In fullscreen mode, we have no frame. In restored mode, we draw our own
75 // client edge over part of the default frame. 74 // client edge over part of the default frame.
76 if (IsFullscreen()) 75 if (IsFullscreen())
77 border_thickness = 0; 76 border_thickness = 0;
78 else if (!IsMaximized()) 77 else if (!IsMaximized())
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 GetWindow()->non_client_view()->Layout(); 112 GetWindow()->non_client_view()->Layout();
114 GetWindow()->non_client_view()->SchedulePaint(); 113 GetWindow()->non_client_view()->SchedulePaint();
115 } 114 }
116 } 115 }
117 116
118 void BrowserFrameWin::OnScreenReaderDetected() { 117 void BrowserFrameWin::OnScreenReaderDetected() {
119 BrowserAccessibilityState::GetInstance()->OnScreenReaderDetected(); 118 BrowserAccessibilityState::GetInstance()->OnScreenReaderDetected();
120 WindowWin::OnScreenReaderDetected(); 119 WindowWin::OnScreenReaderDetected();
121 } 120 }
122 121
123 bool BrowserFrameWin::ShouldUseNativeFrame() const {
124 // App panel windows draw their own frame.
125 if (browser_view_->IsBrowserTypePanel())
126 return false;
127
128 // We don't theme popup or app windows, so regardless of whether or not a
129 // theme is active for normal browser windows, we don't want to use the custom
130 // frame for popups/apps.
131 if (!browser_view_->IsBrowserTypeNormal() &&
132 WindowWin::ShouldUseNativeFrame()) {
133 return true;
134 }
135
136 // Otherwise, we use the native frame when we're told we should by the theme
137 // provider (e.g. no custom theme is active).
138 return GetWidget()->GetThemeProvider()->ShouldUseNativeFrame();
139 }
140
141 //////////////////////////////////////////////////////////////////////////////// 122 ////////////////////////////////////////////////////////////////////////////////
142 // BrowserFrameWin, NativeBrowserFrame implementation: 123 // BrowserFrameWin, NativeBrowserFrame implementation:
143 124
144 views::NativeWindow* BrowserFrameWin::AsNativeWindow() { 125 views::NativeWindow* BrowserFrameWin::AsNativeWindow() {
145 return this; 126 return this;
146 } 127 }
147 128
148 const views::NativeWindow* BrowserFrameWin::AsNativeWindow() const { 129 const views::NativeWindow* BrowserFrameWin::AsNativeWindow() const {
149 return this; 130 return this;
150 } 131 }
(...skipping 12 matching lines...) Expand all
163 144
164 void BrowserFrameWin::TabStripDisplayModeChanged() { 145 void BrowserFrameWin::TabStripDisplayModeChanged() {
165 UpdateDWMFrame(); 146 UpdateDWMFrame();
166 } 147 }
167 148
168 /////////////////////////////////////////////////////////////////////////////// 149 ///////////////////////////////////////////////////////////////////////////////
169 // BrowserFrameWin, private: 150 // BrowserFrameWin, private:
170 151
171 void BrowserFrameWin::UpdateDWMFrame() { 152 void BrowserFrameWin::UpdateDWMFrame() {
172 // Nothing to do yet, or we're not showing a DWM frame. 153 // Nothing to do yet, or we're not showing a DWM frame.
173 if (!GetWindow()->client_view() || !browser_frame_->ShouldUseNativeFrame()) 154 if (!GetWindow()->client_view() || !browser_frame_->AlwaysUseNativeFrame())
174 return; 155 return;
175 156
176 MARGINS margins = { 0 }; 157 MARGINS margins = { 0 };
177 if (browser_view_->IsBrowserTypeNormal()) { 158 if (browser_view_->IsBrowserTypeNormal()) {
178 // In fullscreen mode, we don't extend glass into the client area at all, 159 // In fullscreen mode, we don't extend glass into the client area at all,
179 // because the GDI-drawn text in the web content composited over it will 160 // because the GDI-drawn text in the web content composited over it will
180 // become semi-transparent over any glass area. 161 // become semi-transparent over any glass area.
181 if (!IsMaximized() && !IsFullscreen()) { 162 if (!IsMaximized() && !IsFullscreen()) {
182 margins.cxLeftWidth = kClientEdgeThickness + 1; 163 margins.cxLeftWidth = kClientEdgeThickness + 1;
183 margins.cxRightWidth = kClientEdgeThickness + 1; 164 margins.cxRightWidth = kClientEdgeThickness + 1;
(...skipping 27 matching lines...) Expand all
211 //////////////////////////////////////////////////////////////////////////////// 192 ////////////////////////////////////////////////////////////////////////////////
212 // NativeBrowserFrame, public: 193 // NativeBrowserFrame, public:
213 194
214 // static 195 // static
215 NativeBrowserFrame* NativeBrowserFrame::CreateNativeBrowserFrame( 196 NativeBrowserFrame* NativeBrowserFrame::CreateNativeBrowserFrame(
216 BrowserFrame* browser_frame, 197 BrowserFrame* browser_frame,
217 BrowserView* browser_view) { 198 BrowserView* browser_view) {
218 return new BrowserFrameWin(browser_frame, browser_view); 199 return new BrowserFrameWin(browser_frame, browser_view);
219 } 200 }
220 201
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698