| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/common/wm/window_state.h" | 5 #include "ash/common/wm/window_state.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "ash/common/wm/default_state.h" | 9 #include "ash/common/wm/default_state.h" |
| 10 #include "ash/common/wm/window_positioning_utils.h" | 10 #include "ash/common/wm/window_positioning_utils.h" |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 } | 179 } |
| 180 | 180 |
| 181 void WindowState::Restore() { | 181 void WindowState::Restore() { |
| 182 if (!IsNormalStateType()) { | 182 if (!IsNormalStateType()) { |
| 183 const WMEvent event(WM_EVENT_NORMAL); | 183 const WMEvent event(WM_EVENT_NORMAL); |
| 184 OnWMEvent(&event); | 184 OnWMEvent(&event); |
| 185 } | 185 } |
| 186 } | 186 } |
| 187 | 187 |
| 188 void WindowState::DisableAlwaysOnTop(WmWindow* window_on_top) { | 188 void WindowState::DisableAlwaysOnTop(WmWindow* window_on_top) { |
| 189 DCHECK(window_on_top); | |
| 190 if (GetAlwaysOnTop()) { | 189 if (GetAlwaysOnTop()) { |
| 191 // |window_| is hidden first to avoid canceling fullscreen mode when it is | 190 // |window_| is hidden first to avoid canceling fullscreen mode when it is |
| 192 // no longer always on top and gets added to default container. This avoids | 191 // no longer always on top and gets added to default container. This avoids |
| 193 // sending redundant OnFullscreenStateChanged to the layout manager. The | 192 // sending redundant OnFullscreenStateChanged to the layout manager. The |
| 194 // |window_| visibility is restored after it no longer obscures the | 193 // |window_| visibility is restored after it no longer obscures the |
| 195 // |window_on_top|. | 194 // |window_on_top|. |
| 196 bool visible = window_->IsVisible(); | 195 bool visible = window_->IsVisible(); |
| 197 if (visible) | 196 if (visible) |
| 198 window_->Hide(); | 197 window_->Hide(); |
| 199 window_->SetAlwaysOnTop(false); | 198 window_->SetAlwaysOnTop(false); |
| 200 // Technically it is possible that a |window_| could make itself | 199 // Technically it is possible that a |window_| could make itself |
| 201 // always_on_top really quickly. This is probably not a realistic case but | 200 // always_on_top really quickly. This is probably not a realistic case but |
| 202 // check if the two windows are in the same container just in case. | 201 // check if the two windows are in the same container just in case. |
| 203 if (window_on_top->GetParent() == window_->GetParent()) | 202 if (window_on_top && window_on_top->GetParent() == window_->GetParent()) |
| 204 window_->GetParent()->StackChildAbove(window_on_top, window_); | 203 window_->GetParent()->StackChildAbove(window_on_top, window_); |
| 205 if (visible) | 204 if (visible) |
| 206 window_->Show(); | 205 window_->Show(); |
| 207 cached_always_on_top_ = true; | 206 cached_always_on_top_ = true; |
| 208 } | 207 } |
| 209 } | 208 } |
| 210 | 209 |
| 211 void WindowState::RestoreAlwaysOnTop() { | 210 void WindowState::RestoreAlwaysOnTop() { |
| 212 if (delegate() && delegate()->RestoreAlwaysOnTop(this)) | 211 if (delegate() && delegate()->RestoreAlwaysOnTop(this)) |
| 213 return; | 212 return; |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 if (!window_->GetTargetVisibility()) { | 397 if (!window_->GetTargetVisibility()) { |
| 399 SetBoundsConstrained(new_bounds); | 398 SetBoundsConstrained(new_bounds); |
| 400 return; | 399 return; |
| 401 } | 400 } |
| 402 | 401 |
| 403 window_->SetBoundsDirectCrossFade(new_bounds); | 402 window_->SetBoundsDirectCrossFade(new_bounds); |
| 404 } | 403 } |
| 405 | 404 |
| 406 } // namespace wm | 405 } // namespace wm |
| 407 } // namespace ash | 406 } // namespace ash |
| OLD | NEW |