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

Side by Side Diff: ash/wm/base_layout_manager.cc

Issue 9960042: Refactor screen/monitor so that gfx::Screen returns monitor object. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 8 years, 8 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
« no previous file with comments | « ash/tooltips/tooltip_controller.cc ('k') | ash/wm/base_layout_manager_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ash/wm/base_layout_manager.h" 5 #include "ash/wm/base_layout_manager.h"
6 6
7 #include "ash/screen_ash.h" 7 #include "ash/screen_ash.h"
8 #include "ash/shell.h" 8 #include "ash/shell.h"
9 #include "ash/wm/property_util.h" 9 #include "ash/wm/property_util.h"
10 #include "ash/wm/shelf_layout_manager.h" 10 #include "ash/wm/shelf_layout_manager.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 } 104 }
105 105
106 void BaseLayoutManager::SetChildBounds(aura::Window* child, 106 void BaseLayoutManager::SetChildBounds(aura::Window* child,
107 const gfx::Rect& requested_bounds) { 107 const gfx::Rect& requested_bounds) {
108 gfx::Rect child_bounds(requested_bounds); 108 gfx::Rect child_bounds(requested_bounds);
109 // Avoid a janky resize on startup by ensuring the initial bounds fill the 109 // Avoid a janky resize on startup by ensuring the initial bounds fill the
110 // screen. 110 // screen.
111 if (wm::IsWindowMaximized(child)) 111 if (wm::IsWindowMaximized(child))
112 child_bounds = ScreenAsh::GetMaximizedWindowBounds(child); 112 child_bounds = ScreenAsh::GetMaximizedWindowBounds(child);
113 else if (wm::IsWindowFullscreen(child)) 113 else if (wm::IsWindowFullscreen(child))
114 child_bounds = gfx::Screen::GetMonitorAreaNearestWindow(child); 114 child_bounds = gfx::Screen::GetMonitorNearestWindow(child).bounds();
115 SetChildBoundsDirect(child, child_bounds); 115 SetChildBoundsDirect(child, child_bounds);
116 } 116 }
117 117
118 ///////////////////////////////////////////////////////////////////////////// 118 /////////////////////////////////////////////////////////////////////////////
119 // BaseLayoutManager, RootWindowObserver overrides: 119 // BaseLayoutManager, RootWindowObserver overrides:
120 120
121 void BaseLayoutManager::OnRootWindowResized(const aura::RootWindow* root, 121 void BaseLayoutManager::OnRootWindowResized(const aura::RootWindow* root,
122 const gfx::Size& old_size) { 122 const gfx::Size& old_size) {
123 AdjustWindowSizesForScreenChange(); 123 AdjustWindowSizesForScreenChange();
124 } 124 }
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 break; 187 break;
188 } 188 }
189 189
190 case ui::SHOW_STATE_MAXIMIZED: 190 case ui::SHOW_STATE_MAXIMIZED:
191 SetRestoreBoundsIfNotSet(window); 191 SetRestoreBoundsIfNotSet(window);
192 SetChildBoundsDirect(window, ScreenAsh::GetMaximizedWindowBounds(window)); 192 SetChildBoundsDirect(window, ScreenAsh::GetMaximizedWindowBounds(window));
193 break; 193 break;
194 194
195 case ui::SHOW_STATE_FULLSCREEN: 195 case ui::SHOW_STATE_FULLSCREEN:
196 SetRestoreBoundsIfNotSet(window); 196 SetRestoreBoundsIfNotSet(window);
197 SetChildBoundsDirect(window, 197 SetChildBoundsDirect(
198 gfx::Screen::GetMonitorAreaNearestWindow(window)); 198 window, gfx::Screen::GetMonitorNearestWindow(window).bounds());
199 break; 199 break;
200 200
201 default: 201 default:
202 break; 202 break;
203 } 203 }
204 } 204 }
205 205
206 void BaseLayoutManager::AdjustWindowSizesForScreenChange() { 206 void BaseLayoutManager::AdjustWindowSizesForScreenChange() {
207 // If a user plugs an external monitor into a laptop running Aura the 207 // If a user plugs an external monitor into a laptop running Aura the
208 // monitor size will change. Maximized windows need to resize to match. 208 // monitor size will change. Maximized windows need to resize to match.
209 // We also do this when developers running Aura on a desktop manually resize 209 // We also do this when developers running Aura on a desktop manually resize
210 // the host window. 210 // the host window.
211 // We also need to do this when the work area insets changes. 211 // We also need to do this when the work area insets changes.
212 for (WindowSet::const_iterator it = windows_.begin(); 212 for (WindowSet::const_iterator it = windows_.begin();
213 it != windows_.end(); 213 it != windows_.end();
214 ++it) { 214 ++it) {
215 aura::Window* window = *it; 215 aura::Window* window = *it;
216 if (wm::IsWindowMaximized(window)) { 216 if (wm::IsWindowMaximized(window)) {
217 SetChildBoundsDirect(window, ScreenAsh::GetMaximizedWindowBounds(window)); 217 SetChildBoundsDirect(window, ScreenAsh::GetMaximizedWindowBounds(window));
218 } else if (wm::IsWindowFullscreen(window)) { 218 } else if (wm::IsWindowFullscreen(window)) {
219 SetChildBoundsDirect(window, 219 SetChildBoundsDirect(
220 gfx::Screen::GetMonitorAreaNearestWindow(window)); 220 window, gfx::Screen::GetMonitorNearestWindow(window).bounds());
221 } else { 221 } else {
222 // The work area may be smaller than the full screen. 222 // The work area may be smaller than the full screen.
223 gfx::Rect monitor_rect = 223 gfx::Rect monitor_rect =
224 gfx::Screen::GetMonitorWorkAreaNearestWindow(window); 224 gfx::Screen::GetMonitorNearestWindow(window).work_area();
225 // Put as much of the window as possible within the monitor area. 225 // Put as much of the window as possible within the monitor area.
226 window->SetBounds(window->bounds().AdjustToFit(monitor_rect)); 226 window->SetBounds(window->bounds().AdjustToFit(monitor_rect));
227 } 227 }
228 } 228 }
229 } 229 }
230 230
231 } // namespace internal 231 } // namespace internal
232 } // namespace ash 232 } // namespace ash
OLDNEW
« no previous file with comments | « ash/tooltips/tooltip_controller.cc ('k') | ash/wm/base_layout_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698