Index: ash/wm/power_button_controller.cc |
diff --git a/ash/wm/power_button_controller.cc b/ash/wm/power_button_controller.cc |
index 621b24a7fd7a47e937f2678ce88982e12400afdc..70fd965c4193c237c38cad7448f74e732ea29576 100644 |
--- a/ash/wm/power_button_controller.cc |
+++ b/ash/wm/power_button_controller.cc |
@@ -169,10 +169,26 @@ void GetContainers(int container_mask, aura::Window::Windows* containers) { |
root_window, |
internal::kShellWindowId_DesktopBackgroundContainer)); |
} |
- if (container_mask & PowerButtonController::NON_LOCK_SCREEN_CONTAINERS) { |
+ if (container_mask & PowerButtonController::LAUNCHER) { |
containers->push_back(Shell::GetContainer( |
root_window, |
- internal::kShellWindowId_NonLockScreenContainersContainer)); |
+ internal::kShellWindowId_LauncherContainer)); |
+ } |
+ if (container_mask & PowerButtonController::NON_LOCK_SCREEN_CONTAINERS) { |
+ // TODO(antrim): Figure out a way to eliminate a need to exclude launcher |
+ // in such way. |
+ aura::Window* non_lock_screen_containers = Shell::GetContainer( |
+ root_window, |
+ internal::kShellWindowId_NonLockScreenContainersContainer); |
+ aura::Window::Windows children = non_lock_screen_containers->children(); |
+ |
+ for (aura::Window::Windows::const_iterator it = children.begin(); |
+ it != children.end(); ++it) { |
+ aura::Window* window = *it; |
+ if (window->id() == internal::kShellWindowId_LauncherContainer) |
+ continue; |
+ containers->push_back(window); |
+ } |
} |
if (container_mask & PowerButtonController::LOCK_SCREEN_BACKGROUND) { |
containers->push_back(Shell::GetContainer( |
@@ -283,6 +299,7 @@ gfx::Rect PowerButtonController::TestApi::GetBlackLayerBounds() const { |
// static |
int PowerButtonController::GetAllContainersMask() { |
return PowerButtonController::DESKTOP_BACKGROUND | |
+ PowerButtonController::LAUNCHER | |
PowerButtonController::NON_LOCK_SCREEN_CONTAINERS | |
GetAllLockScreenContainersMask(); |
} |
@@ -353,7 +370,7 @@ void PowerButtonController::OnLockStateChanged(bool locked) { |
this, &PowerButtonController::OnLockToShutdownTimeout); |
} |
} else { |
- StartAnimation(DESKTOP_BACKGROUND | NON_LOCK_SCREEN_CONTAINERS, |
+ StartAnimation(DESKTOP_BACKGROUND | LAUNCHER | NON_LOCK_SCREEN_CONTAINERS, |
ANIMATION_RESTORE); |
HideBlackLayer(); |
} |
@@ -372,6 +389,8 @@ void PowerButtonController::OnStartingLock() { |
// as part of the slow-close animation. |
ShowBlackLayer(); |
+ StartAnimation(LAUNCHER, ANIMATION_HIDE); |
+ |
StartAnimation(NON_LOCK_SCREEN_CONTAINERS, ANIMATION_FAST_CLOSE); |
// Hide the screen locker containers so we can make them fade in later. |
@@ -510,7 +529,7 @@ void PowerButtonController::OnLockTimeout() { |
void PowerButtonController::OnLockFailTimeout() { |
DCHECK_NE(login_status_, user::LOGGED_IN_LOCKED); |
LOG(ERROR) << "Screen lock request timed out"; |
- StartAnimation(NON_LOCK_SCREEN_CONTAINERS, ANIMATION_RESTORE); |
+ StartAnimation(LAUNCHER | NON_LOCK_SCREEN_CONTAINERS, ANIMATION_RESTORE); |
HideBlackLayer(); |
} |
@@ -560,7 +579,7 @@ void PowerButtonController::StartShutdownAnimationAndRequestShutdown() { |
// Hide the other containers before starting the animation. |
// ANIMATION_FAST_CLOSE will make the screen locker windows partially |
// transparent, and we don't want the other windows to show through. |
- StartAnimation(NON_LOCK_SCREEN_CONTAINERS, ANIMATION_HIDE); |
+ StartAnimation(LAUNCHER | NON_LOCK_SCREEN_CONTAINERS, ANIMATION_HIDE); |
StartAnimation(GetAllLockScreenContainersMask(), ANIMATION_FAST_CLOSE); |
} else { |
StartAnimation(GetAllContainersMask(), ANIMATION_FAST_CLOSE); |