| OLD | NEW |
| 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/session_state_delegate.h" | 8 #include "ash/session_state_delegate.h" |
| 9 #include "ash/shelf/shelf_layout_manager.h" | 9 #include "ash/shelf/shelf_layout_manager.h" |
| 10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 child_bounds = ScreenAsh::GetMaximizedWindowBoundsInParent(child); | 100 child_bounds = ScreenAsh::GetMaximizedWindowBoundsInParent(child); |
| 101 else if (wm::IsWindowFullscreen(child)) | 101 else if (wm::IsWindowFullscreen(child)) |
| 102 child_bounds = ScreenAsh::GetDisplayBoundsInParent(child); | 102 child_bounds = ScreenAsh::GetDisplayBoundsInParent(child); |
| 103 SetChildBoundsDirect(child, child_bounds); | 103 SetChildBoundsDirect(child, child_bounds); |
| 104 } | 104 } |
| 105 | 105 |
| 106 ///////////////////////////////////////////////////////////////////////////// | 106 ///////////////////////////////////////////////////////////////////////////// |
| 107 // BaseLayoutManager, ash::ShellObserver overrides: | 107 // BaseLayoutManager, ash::ShellObserver overrides: |
| 108 | 108 |
| 109 void BaseLayoutManager::OnDisplayWorkAreaInsetsChanged() { | 109 void BaseLayoutManager::OnDisplayWorkAreaInsetsChanged() { |
| 110 AdjustWindowSizesForScreenChange(ADJUST_WINDOW_DISPLAY_INSETS_CHANGED); | 110 AdjustWindowsBoundsForWorkAreaChange(ADJUST_WINDOW_WORK_AREA_INSETS_CHANGED); |
| 111 } | 111 } |
| 112 | 112 |
| 113 ///////////////////////////////////////////////////////////////////////////// | 113 ///////////////////////////////////////////////////////////////////////////// |
| 114 // BaseLayoutManager, WindowObserver overrides: | 114 // BaseLayoutManager, WindowObserver overrides: |
| 115 | 115 |
| 116 void BaseLayoutManager::OnWindowPropertyChanged(aura::Window* window, | 116 void BaseLayoutManager::OnWindowPropertyChanged(aura::Window* window, |
| 117 const void* key, | 117 const void* key, |
| 118 intptr_t old) { | 118 intptr_t old) { |
| 119 if (key == aura::client::kShowStateKey) { | 119 if (key == aura::client::kShowStateKey) { |
| 120 ui::WindowShowState old_state = static_cast<ui::WindowShowState>(old); | 120 ui::WindowShowState old_state = static_cast<ui::WindowShowState>(old); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 138 if (root_window_ == window) { | 138 if (root_window_ == window) { |
| 139 root_window_->RemoveObserver(this); | 139 root_window_->RemoveObserver(this); |
| 140 root_window_ = NULL; | 140 root_window_ = NULL; |
| 141 } | 141 } |
| 142 } | 142 } |
| 143 | 143 |
| 144 void BaseLayoutManager::OnWindowBoundsChanged(aura::Window* window, | 144 void BaseLayoutManager::OnWindowBoundsChanged(aura::Window* window, |
| 145 const gfx::Rect& old_bounds, | 145 const gfx::Rect& old_bounds, |
| 146 const gfx::Rect& new_bounds) { | 146 const gfx::Rect& new_bounds) { |
| 147 if (root_window_ == window) | 147 if (root_window_ == window) |
| 148 AdjustWindowSizesForScreenChange(ADJUST_WINDOW_SCREEN_SIZE_CHANGED); | 148 AdjustWindowsBoundsForWorkAreaChange(ADJUST_WINDOW_DISPLAY_SIZE_CHANGED); |
| 149 } | 149 } |
| 150 | 150 |
| 151 ////////////////////////////////////////////////////////////////////////////// | 151 ////////////////////////////////////////////////////////////////////////////// |
| 152 // BaseLayoutManager, aura::client::ActivationChangeObserver implementation: | 152 // BaseLayoutManager, aura::client::ActivationChangeObserver implementation: |
| 153 | 153 |
| 154 void BaseLayoutManager::OnWindowActivated(aura::Window* gained_active, | 154 void BaseLayoutManager::OnWindowActivated(aura::Window* gained_active, |
| 155 aura::Window* lost_active) { | 155 aura::Window* lost_active) { |
| 156 if (views::corewm::UseFocusController()) { | 156 if (views::corewm::UseFocusController()) { |
| 157 if (gained_active && wm::IsWindowMinimized(gained_active) && | 157 if (gained_active && wm::IsWindowMinimized(gained_active) && |
| 158 !gained_active->IsVisible()) { | 158 !gained_active->IsVisible()) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 185 // sure it's visible. | 185 // sure it's visible. |
| 186 window->Show(); | 186 window->Show(); |
| 187 if (last_show_state == ui::SHOW_STATE_MINIMIZED && | 187 if (last_show_state == ui::SHOW_STATE_MINIMIZED && |
| 188 !wm::IsWindowMaximized(window) && | 188 !wm::IsWindowMaximized(window) && |
| 189 !wm::IsWindowFullscreen(window)) { | 189 !wm::IsWindowFullscreen(window)) { |
| 190 window->ClearProperty(internal::kWindowRestoresToRestoreBounds); | 190 window->ClearProperty(internal::kWindowRestoresToRestoreBounds); |
| 191 } | 191 } |
| 192 } | 192 } |
| 193 } | 193 } |
| 194 | 194 |
| 195 void BaseLayoutManager::AdjustWindowSizesForScreenChange( | 195 void BaseLayoutManager::AdjustWindowsBoundsForWorkAreaChange( |
| 196 AdjustWindowReason reason) { | 196 AdjustWindowReason reason) { |
| 197 // Don't do any adjustments of the insets while we are in screen locked mode. | 197 // Don't do any adjustments of the insets while we are in screen locked mode. |
| 198 // This would happen if the launcher was auto hidden before the login screen | 198 // This would happen if the launcher was auto hidden before the login screen |
| 199 // was shown and then gets shown when the login screen gets presented. | 199 // was shown and then gets shown when the login screen gets presented. |
| 200 if (reason == ADJUST_WINDOW_DISPLAY_INSETS_CHANGED && | 200 if (reason == ADJUST_WINDOW_WORK_AREA_INSETS_CHANGED && |
| 201 Shell::GetInstance()->session_state_delegate()->IsScreenLocked()) | 201 Shell::GetInstance()->session_state_delegate()->IsScreenLocked()) |
| 202 return; | 202 return; |
| 203 | 203 |
| 204 // If a user plugs an external display into a laptop running Aura the | 204 // If a user plugs an external display into a laptop running Aura the |
| 205 // display size will change. Maximized windows need to resize to match. | 205 // display size will change. Maximized windows need to resize to match. |
| 206 // We also do this when developers running Aura on a desktop manually resize | 206 // We also do this when developers running Aura on a desktop manually resize |
| 207 // the host window. | 207 // the host window. |
| 208 // We also need to do this when the work area insets changes. | 208 // We also need to do this when the work area insets changes. |
| 209 for (WindowSet::const_iterator it = windows_.begin(); | 209 for (WindowSet::const_iterator it = windows_.begin(); |
| 210 it != windows_.end(); | 210 it != windows_.end(); |
| 211 ++it) { | 211 ++it) { |
| 212 AdjustWindowSizeForScreenChange(*it, reason); | 212 AdjustWindowBoundsForWorkAreaChange(*it, reason); |
| 213 } | 213 } |
| 214 } | 214 } |
| 215 | 215 |
| 216 void BaseLayoutManager::AdjustWindowSizeForScreenChange( | 216 void BaseLayoutManager::AdjustWindowBoundsForWorkAreaChange( |
| 217 aura::Window* window, | 217 aura::Window* window, |
| 218 AdjustWindowReason reason) { | 218 AdjustWindowReason reason) { |
| 219 if (wm::IsWindowMaximized(window)) { | 219 if (wm::IsWindowMaximized(window)) { |
| 220 SetChildBoundsDirect( | 220 SetChildBoundsDirect( |
| 221 window, ScreenAsh::GetMaximizedWindowBoundsInParent(window)); | 221 window, ScreenAsh::GetMaximizedWindowBoundsInParent(window)); |
| 222 } else if (wm::IsWindowFullscreen(window)) { | 222 } else if (wm::IsWindowFullscreen(window)) { |
| 223 SetChildBoundsDirect( | 223 SetChildBoundsDirect( |
| 224 window, ScreenAsh::GetDisplayBoundsInParent(window)); | 224 window, ScreenAsh::GetDisplayBoundsInParent(window)); |
| 225 } else { | 225 } else { |
| 226 // The work area may be smaller than the full screen. | 226 // The work area may be smaller than the full screen. |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 window, ScreenAsh::GetDisplayBoundsInParent(window)); | 264 window, ScreenAsh::GetDisplayBoundsInParent(window)); |
| 265 break; | 265 break; |
| 266 | 266 |
| 267 default: | 267 default: |
| 268 break; | 268 break; |
| 269 } | 269 } |
| 270 } | 270 } |
| 271 | 271 |
| 272 } // namespace internal | 272 } // namespace internal |
| 273 } // namespace ash | 273 } // namespace ash |
| OLD | NEW |