| Index: ash/wm/base_layout_manager.cc
|
| diff --git a/ash/wm/base_layout_manager.cc b/ash/wm/base_layout_manager.cc
|
| index d7d948f6e99c462f734a9ee501875b42d554814e..1a22d10eea9b13b31f07aa1edf92c41d52a97fdc 100644
|
| --- a/ash/wm/base_layout_manager.cc
|
| +++ b/ash/wm/base_layout_manager.cc
|
| @@ -4,8 +4,10 @@
|
|
|
| #include "ash/wm/base_layout_manager.h"
|
|
|
| +#include "ash/screen_ash.h"
|
| #include "ash/shell.h"
|
| #include "ash/wm/property_util.h"
|
| +#include "ash/wm/shelf_layout_manager.h"
|
| #include "ash/wm/window_util.h"
|
| #include "ui/aura/client/aura_constants.h"
|
| #include "ui/aura/root_window.h"
|
| @@ -60,7 +62,7 @@ void BaseLayoutManager::SetChildBounds(aura::Window* child,
|
| // Avoid a janky resize on startup by ensuring the initial bounds fill the
|
| // screen.
|
| if (wm::IsWindowMaximized(child))
|
| - child_bounds = gfx::Screen::GetMonitorWorkAreaNearestWindow(child);
|
| + child_bounds = ScreenAsh::GetMaximizedWindowBounds(child);
|
| else if (wm::IsWindowFullscreen(child))
|
| child_bounds = gfx::Screen::GetMonitorAreaNearestWindow(child);
|
| SetChildBoundsDirect(child, child_bounds);
|
| @@ -99,19 +101,20 @@ void BaseLayoutManager::UpdateBoundsFromShowState(aura::Window* window) {
|
| case ui::SHOW_STATE_NORMAL: {
|
| const gfx::Rect* restore = GetRestoreBounds(window);
|
| if (restore)
|
| - window->SetBounds(*restore);
|
| + SetChildBoundsDirect(window, *restore);
|
| window->ClearProperty(aura::client::kRestoreBoundsKey);
|
| break;
|
| }
|
|
|
| case ui::SHOW_STATE_MAXIMIZED:
|
| SetRestoreBoundsIfNotSet(window);
|
| - window->SetBounds(gfx::Screen::GetMonitorWorkAreaNearestWindow(window));
|
| + SetChildBoundsDirect(window, ScreenAsh::GetMaximizedWindowBounds(window));
|
| break;
|
|
|
| case ui::SHOW_STATE_FULLSCREEN:
|
| SetRestoreBoundsIfNotSet(window);
|
| - window->SetBounds(gfx::Screen::GetMonitorAreaNearestWindow(window));
|
| + SetChildBoundsDirect(window,
|
| + gfx::Screen::GetMonitorAreaNearestWindow(window));
|
| break;
|
|
|
| default:
|
| @@ -129,12 +132,18 @@ void BaseLayoutManager::AdjustWindowSizesForScreenChange() {
|
| it != windows_.end();
|
| ++it) {
|
| aura::Window* window = *it;
|
| - // The work area may be smaller than the full screen.
|
| - gfx::Rect monitor_rect = wm::IsWindowFullscreen(window) ?
|
| - gfx::Screen::GetMonitorAreaNearestWindow(window) :
|
| - gfx::Screen::GetMonitorWorkAreaNearestWindow(window);
|
| - // Put as much of the window as possible within the monitor area.
|
| - window->SetBounds(window->bounds().AdjustToFit(monitor_rect));
|
| + if (wm::IsWindowMaximized(window)) {
|
| + SetChildBoundsDirect(window, ScreenAsh::GetMaximizedWindowBounds(window));
|
| + } else if (wm::IsWindowFullscreen(window)) {
|
| + SetChildBoundsDirect(window,
|
| + gfx::Screen::GetMonitorAreaNearestWindow(window));
|
| + } else {
|
| + // The work area may be smaller than the full screen.
|
| + gfx::Rect monitor_rect =
|
| + gfx::Screen::GetMonitorWorkAreaNearestWindow(window);
|
| + // Put as much of the window as possible within the monitor area.
|
| + window->SetBounds(window->bounds().AdjustToFit(monitor_rect));
|
| + }
|
| }
|
| }
|
|
|
|
|