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

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

Issue 11819008: Refactors building the system menu model into a common place (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to trunk and fix windows build Created 7 years, 11 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_desktop_root_window_host_win.h" 5 #include "chrome/browser/ui/views/frame/browser_desktop_root_window_host_win.h"
6 6
7 #include <dwmapi.h> 7 #include <dwmapi.h>
8 8
9 #include "chrome/browser/ui/views/frame/browser_frame.h" 9 #include "chrome/browser/ui/views/frame/browser_frame.h"
10 #include "chrome/browser/ui/views/frame/browser_view.h" 10 #include "chrome/browser/ui/views/frame/browser_view.h"
11 #include "chrome/browser/ui/views/tabs/tab_strip.h" 11 #include "chrome/browser/ui/views/tabs/tab_strip.h"
12 #include "ui/base/theme_provider.h" 12 #include "ui/base/theme_provider.h"
13 #include "ui/views/controls/menu/native_menu_win.h"
13 14
14 #pragma comment(lib, "dwmapi.lib") 15 #pragma comment(lib, "dwmapi.lib")
15 16
16 namespace { 17 namespace {
17 18
18 const int kClientEdgeThickness = 3; 19 const int kClientEdgeThickness = 3;
19 // We need to offset the DWMFrame into the toolbar so that the blackness 20 // We need to offset the DWMFrame into the toolbar so that the blackness
20 // doesn't show up on our rounded corners. 21 // doesn't show up on our rounded corners.
21 const int kDWMFrameTopOffset = 3; 22 const int kDWMFrameTopOffset = 3;
22 23
(...skipping 11 matching lines...) Expand all
34 : DesktopRootWindowHostWin(native_widget_delegate, 35 : DesktopRootWindowHostWin(native_widget_delegate,
35 desktop_native_widget_aura, 36 desktop_native_widget_aura,
36 initial_bounds), 37 initial_bounds),
37 browser_view_(browser_view), 38 browser_view_(browser_view),
38 browser_frame_(browser_frame) { 39 browser_frame_(browser_frame) {
39 } 40 }
40 41
41 BrowserDesktopRootWindowHostWin::~BrowserDesktopRootWindowHostWin() { 42 BrowserDesktopRootWindowHostWin::~BrowserDesktopRootWindowHostWin() {
42 } 43 }
43 44
45 views::NativeMenuWin* BrowserDesktopRootWindowHostWin::GetSystemMenu() {
46 if (!system_menu_.get()) {
47 system_menu_.reset(
48 new views::NativeMenuWin(browser_frame_->GetSystemMenuModel(),
49 GetHWND()));
50 system_menu_->Rebuild();
51 }
52 return system_menu_.get();
53 }
54
44 //////////////////////////////////////////////////////////////////////////////// 55 ////////////////////////////////////////////////////////////////////////////////
45 // BrowserDesktopRootWindowHostWin, BrowserDesktopRootWindowHost implementation: 56 // BrowserDesktopRootWindowHostWin, BrowserDesktopRootWindowHost implementation:
46 57
47 views::DesktopRootWindowHost* 58 views::DesktopRootWindowHost*
48 BrowserDesktopRootWindowHostWin::AsDesktopRootWindowHost() { 59 BrowserDesktopRootWindowHostWin::AsDesktopRootWindowHost() {
49 return this; 60 return this;
50 } 61 }
51 62
52 int BrowserDesktopRootWindowHostWin::GetMinimizeButtonOffset() const { 63 int BrowserDesktopRootWindowHostWin::GetMinimizeButtonOffset() const {
53 return minimize_button_metrics_.GetMinimizeButtonOffsetX(); 64 return minimize_button_metrics_.GetMinimizeButtonOffsetX();
54 } 65 }
55 66
67 bool BrowserDesktopRootWindowHostWin::UsesNativeSystemMenu() const {
68 return true;
69 }
70
56 //////////////////////////////////////////////////////////////////////////////// 71 ////////////////////////////////////////////////////////////////////////////////
57 // BrowserDesktopRootWindowHostWin, views::DesktopRootWindowHostWin overrides: 72 // BrowserDesktopRootWindowHostWin, views::DesktopRootWindowHostWin overrides:
58 73
59 int BrowserDesktopRootWindowHostWin::GetInitialShowState() const { 74 int BrowserDesktopRootWindowHostWin::GetInitialShowState() const {
60 STARTUPINFO si = {0}; 75 STARTUPINFO si = {0};
61 si.cb = sizeof(si); 76 si.cb = sizeof(si);
62 si.dwFlags = STARTF_USESHOWWINDOW; 77 si.dwFlags = STARTF_USESHOWWINDOW;
63 GetStartupInfo(&si); 78 GetStartupInfo(&si);
64 return si.wShowWindow; 79 return si.wShowWindow;
65 } 80 }
(...skipping 23 matching lines...) Expand all
89 // the window region. 104 // the window region.
90 UpdateDWMFrame(); 105 UpdateDWMFrame();
91 DesktopRootWindowHostWin::HandleFrameChanged(); 106 DesktopRootWindowHostWin::HandleFrameChanged();
92 } 107 }
93 108
94 bool BrowserDesktopRootWindowHostWin::PreHandleMSG(UINT message, 109 bool BrowserDesktopRootWindowHostWin::PreHandleMSG(UINT message,
95 WPARAM w_param, 110 WPARAM w_param,
96 LPARAM l_param, 111 LPARAM l_param,
97 LRESULT* result) { 112 LRESULT* result) {
98 switch (message) { 113 switch (message) {
99 case WM_ACTIVATE: 114 case WM_ACTIVATE:
100 if (LOWORD(w_param) != WA_INACTIVE) 115 if (LOWORD(w_param) != WA_INACTIVE)
101 minimize_button_metrics_.OnHWNDActivated(); 116 minimize_button_metrics_.OnHWNDActivated();
102 return false; 117 return false;
103 case WM_ENDSESSION: 118 case WM_ENDSESSION:
104 browser::SessionEnding(); 119 browser::SessionEnding();
105 return true; 120 return true;
121 case WM_INITMENUPOPUP:
122 GetSystemMenu()->UpdateStates();
123 return true;
106 } 124 }
107 return DesktopRootWindowHostWin::PreHandleMSG( 125 return DesktopRootWindowHostWin::PreHandleMSG(
108 message, w_param, l_param, result); 126 message, w_param, l_param, result);
109 } 127 }
110 128
111 void BrowserDesktopRootWindowHostWin::PostHandleMSG(UINT message, 129 void BrowserDesktopRootWindowHostWin::PostHandleMSG(UINT message,
112 WPARAM w_param, 130 WPARAM w_param,
113 LPARAM l_param) { 131 LPARAM l_param) {
114 switch (message) { 132 switch (message) {
115 case WM_CREATE: 133 case WM_CREATE:
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 views::DesktopNativeWidgetAura* desktop_native_widget_aura, 226 views::DesktopNativeWidgetAura* desktop_native_widget_aura,
209 const gfx::Rect& initial_bounds, 227 const gfx::Rect& initial_bounds,
210 BrowserView* browser_view, 228 BrowserView* browser_view,
211 BrowserFrame* browser_frame) { 229 BrowserFrame* browser_frame) {
212 return new BrowserDesktopRootWindowHostWin(native_widget_delegate, 230 return new BrowserDesktopRootWindowHostWin(native_widget_delegate,
213 desktop_native_widget_aura, 231 desktop_native_widget_aura,
214 initial_bounds, 232 initial_bounds,
215 browser_view, 233 browser_view,
216 browser_frame); 234 browser_frame);
217 } 235 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_desktop_root_window_host_win.h ('k') | chrome/browser/ui/views/frame/browser_frame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698