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

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

Issue 9630002: Ash: Remove compact window mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: OpaqueBrowserFrameView, MultipleWindowIndicatorButton Created 8 years, 9 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_frame.h" 5 #include "chrome/browser/ui/views/frame/browser_frame.h"
6 6
7 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "chrome/browser/themes/theme_service.h" 8 #include "chrome/browser/themes/theme_service.h"
9 #include "chrome/browser/themes/theme_service_factory.h" 9 #include "chrome/browser/themes/theme_service_factory.h"
10 #include "chrome/browser/ui/browser.h" 10 #include "chrome/browser/ui/browser.h"
11 #include "chrome/browser/ui/browser_list.h" 11 #include "chrome/browser/ui/browser_list.h"
12 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" 12 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h"
13 #include "chrome/browser/ui/views/frame/browser_root_view.h" 13 #include "chrome/browser/ui/views/frame/browser_root_view.h"
14 #include "chrome/browser/ui/views/frame/browser_view.h" 14 #include "chrome/browser/ui/views/frame/browser_view.h"
15 #include "chrome/browser/ui/views/frame/native_browser_frame.h" 15 #include "chrome/browser/ui/views/frame/native_browser_frame.h"
16 #include "chrome/common/chrome_switches.h" 16 #include "chrome/common/chrome_switches.h"
17 #include "ui/base/theme_provider.h" 17 #include "ui/base/theme_provider.h"
18 #include "ui/gfx/screen.h" 18 #include "ui/gfx/screen.h"
19 #include "ui/views/widget/native_widget.h" 19 #include "ui/views/widget/native_widget.h"
20 20
21 #if defined(OS_WIN) && !defined(USE_AURA) 21 #if defined(OS_WIN) && !defined(USE_AURA)
22 #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h" 22 #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
23 #elif defined(OS_CHROMEOS)
24 #include "chrome/browser/chromeos/system/runtime_environment.h"
25 #endif
26
27 #if defined(USE_AURA)
28 #include "ash/ash_switches.h"
29 #include "ash/shell.h"
30 #include "chrome/browser/chromeos/status/status_area_view.h"
31 #include "chrome/browser/ui/views/ash/chrome_shell_delegate.h"
32 #endif 23 #endif
33 24
34 //////////////////////////////////////////////////////////////////////////////// 25 ////////////////////////////////////////////////////////////////////////////////
35 // BrowserFrame, public: 26 // BrowserFrame, public:
36 27
37 BrowserFrame::BrowserFrame(BrowserView* browser_view) 28 BrowserFrame::BrowserFrame(BrowserView* browser_view)
38 : native_browser_frame_(NULL), 29 : native_browser_frame_(NULL),
39 root_view_(NULL), 30 root_view_(NULL),
40 browser_frame_view_(NULL), 31 browser_frame_view_(NULL),
41 browser_view_(browser_view) { 32 browser_view_(browser_view) {
(...skipping 17 matching lines...) Expand all
59 // created. 50 // created.
60 params.bounds = browser_view_->browser()->GetSavedWindowBounds(); 51 params.bounds = browser_view_->browser()->GetSavedWindowBounds();
61 params.show_state = browser_view_->browser()->GetSavedWindowShowState(); 52 params.show_state = browser_view_->browser()->GetSavedWindowShowState();
62 } 53 }
63 if (browser_view_->IsPanel()) { 54 if (browser_view_->IsPanel()) {
64 // We need to set the top-most bit when the panel window is created. 55 // We need to set the top-most bit when the panel window is created.
65 // There is a Windows bug/feature that would very likely prevent the window 56 // There is a Windows bug/feature that would very likely prevent the window
66 // from being changed to top-most after the window is created without 57 // from being changed to top-most after the window is created without
67 // activation. 58 // activation.
68 params.type = views::Widget::InitParams::TYPE_PANEL; 59 params.type = views::Widget::InitParams::TYPE_PANEL;
69 } else if (browser_view_->browser()->is_type_popup()) {
70 #if defined(USE_AURA)
71 // In compact mode there is no launcher, so we need to keep panels always
72 // on top so they do not get lost.
73 if (ash::Shell::GetInstance()->IsWindowModeCompact())
74 params.keep_on_top = true;
75 #endif
76 } 60 }
77 #if defined(USE_AURA) 61 #if defined(USE_AURA)
78 // Compact mode has opaque frames, otherwise Aura frames are translucent. 62 // Aura frames are translucent.
79 if (!ash::Shell::GetInstance()->IsWindowModeCompact()) 63 params.transparent = true;
80 params.transparent = true;
81 // Aura compact mode fills the monitor with with its windows.
82 if (ash::Shell::GetInstance()->IsWindowModeCompact() &&
83 browser_view_->IsBrowserTypeNormal()) {
84 params.bounds = gfx::Screen::GetPrimaryMonitorBounds();
85 params.show_state = ui::SHOW_STATE_MAXIMIZED;
86 }
87 #endif 64 #endif
88 Init(params); 65 Init(params);
89
90 // On ChromeOS and Aura compact mode we always want top-level windows
91 // to appear active.
92 bool disable_inactive_rendering = false;
93 #if defined(USE_AURA)
94 disable_inactive_rendering = ash::Shell::GetInstance()->IsWindowModeCompact();
95 #elif defined(OS_CHROMEOS)
96 disable_inactive_rendering = true;
97 #endif
98 if (disable_inactive_rendering && browser_view_->IsBrowserTypeNormal())
99 DisableInactiveRendering();
100 } 66 }
101 67
102 int BrowserFrame::GetMinimizeButtonOffset() const { 68 int BrowserFrame::GetMinimizeButtonOffset() const {
103 return native_browser_frame_->GetMinimizeButtonOffset(); 69 return native_browser_frame_->GetMinimizeButtonOffset();
104 } 70 }
105 71
106 gfx::Rect BrowserFrame::GetBoundsForTabStrip(views::View* tabstrip) const { 72 gfx::Rect BrowserFrame::GetBoundsForTabStrip(views::View* tabstrip) const {
107 gfx::Rect tab_strip_bounds = 73 return browser_frame_view_->GetBoundsForTabStrip(tabstrip);
108 browser_frame_view_->GetBoundsForTabStrip(tabstrip);
109 #if defined(USE_AURA)
110 // Leave space for status area in Aura compact window mode.
111 if (ash::Shell::GetInstance()->IsWindowModeCompact() &&
112 ChromeShellDelegate::instance()) {
113 StatusAreaView* status_area =
114 ChromeShellDelegate::instance()->GetStatusArea();
115 if (status_area) {
116 int reserve_width = 0;
117 gfx::Rect screen_bounds = gfx::Screen::GetPrimaryMonitorBounds();
118 if (base::i18n::IsRTL()) {
119 // Get top-right corner of status area in screen coordinates.
120 gfx::Point status_origin(status_area->bounds().right(), 0);
121 views::View::ConvertPointToScreen(status_area, &status_origin);
122 // Reserve the width between the left edge of screen and the right edge
123 // of status area.
124 reserve_width = status_origin.x() - screen_bounds.x();
125 } else {
126 // Get top-left corner of status area in screen coordinates.
127 gfx::Point status_origin;
128 views::View::ConvertPointToScreen(status_area, &status_origin);
129 // Reserve the width between the right edge of screen and the left edge
130 // of status area.
131 reserve_width = screen_bounds.right() - status_origin.x();
132 }
133 // Views handles the RTL adjustment of tab strip.
134 tab_strip_bounds.set_width(tab_strip_bounds.width() - reserve_width);
135 }
136 }
137 #endif
138 return tab_strip_bounds;
139 } 74 }
140 75
141 int BrowserFrame::GetHorizontalTabStripVerticalOffset(bool restored) const { 76 int BrowserFrame::GetHorizontalTabStripVerticalOffset(bool restored) const {
142 return browser_frame_view_->GetHorizontalTabStripVerticalOffset(restored); 77 return browser_frame_view_->GetHorizontalTabStripVerticalOffset(restored);
143 } 78 }
144 79
145 void BrowserFrame::UpdateThrobber(bool running) { 80 void BrowserFrame::UpdateThrobber(bool running) {
146 browser_frame_view_->UpdateThrobber(running); 81 browser_frame_view_->UpdateThrobber(running);
147 } 82 }
148 83
149 views::View* BrowserFrame::GetFrameView() const { 84 views::View* BrowserFrame::GetFrameView() const {
150 return browser_frame_view_; 85 return browser_frame_view_;
151 } 86 }
152 87
153 void BrowserFrame::TabStripDisplayModeChanged() { 88 void BrowserFrame::TabStripDisplayModeChanged() {
154 if (GetRootView()->has_children()) { 89 if (GetRootView()->has_children()) {
155 // Make sure the child of the root view gets Layout again. 90 // Make sure the child of the root view gets Layout again.
156 GetRootView()->child_at(0)->InvalidateLayout(); 91 GetRootView()->child_at(0)->InvalidateLayout();
157 } 92 }
158 GetRootView()->Layout(); 93 GetRootView()->Layout();
159 native_browser_frame_->TabStripDisplayModeChanged(); 94 native_browser_frame_->TabStripDisplayModeChanged();
160 } 95 }
161 96
162 bool BrowserFrame::IsSingleWindowMode() const {
163 bool single_window_mode = false;
164 #if defined(USE_AURA)
165 single_window_mode = ash::Shell::GetInstance()->IsWindowModeCompact();
166 #elif defined(OS_CHROMEOS)
167 single_window_mode =
168 chromeos::system::runtime_environment::IsRunningOnChromeOS();
169 #endif
170 return single_window_mode;
171 }
172
173 /////////////////////////////////////////////////////////////////////////////// 97 ///////////////////////////////////////////////////////////////////////////////
174 // BrowserFrame, views::Widget overrides: 98 // BrowserFrame, views::Widget overrides:
175 99
176 bool BrowserFrame::IsMaximized() const { 100 bool BrowserFrame::IsMaximized() const {
177 #if defined(OS_CHROMEOS) && !defined(USE_AURA) 101 #if defined(OS_CHROMEOS) && !defined(USE_AURA)
178 if (chromeos::system::runtime_environment::IsRunningOnChromeOS()) { 102 if (chromeos::system::runtime_environment::IsRunningOnChromeOS()) {
179 return !IsFullscreen() && 103 return !IsFullscreen() &&
180 (browser_view_->IsBrowserTypeNormal() || Widget::IsMaximized()); 104 (browser_view_->IsBrowserTypeNormal() || Widget::IsMaximized());
181 } 105 }
182 #endif 106 #endif
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 // set ourselves as the last active browser window to ensure that we get 145 // set ourselves as the last active browser window to ensure that we get
222 // treated as such by the rest of Chrome. 146 // treated as such by the rest of Chrome.
223 BrowserList::SetLastActive(browser_view_->browser()); 147 BrowserList::SetLastActive(browser_view_->browser());
224 } 148 }
225 Widget::OnNativeWidgetActivationChanged(active); 149 Widget::OnNativeWidgetActivationChanged(active);
226 } 150 }
227 151
228 AvatarMenuButton* BrowserFrame::GetAvatarMenuButton() { 152 AvatarMenuButton* BrowserFrame::GetAvatarMenuButton() {
229 return browser_frame_view_->avatar_button(); 153 return browser_frame_view_->avatar_button();
230 } 154 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame.h ('k') | chrome/browser/ui/views/frame/browser_frame_aura.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698