Chromium Code Reviews| Index: ash/shelf/shelf_layout_manager.cc |
| diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc |
| index 2a248050bfa5f3846fcb22ecfabab16f13773c8f..b4bf789e4bd0d35aedbe291dd54a854cd9d52f9d 100644 |
| --- a/ash/shelf/shelf_layout_manager.cc |
| +++ b/ash/shelf/shelf_layout_manager.cc |
| @@ -213,6 +213,7 @@ ShelfLayoutManager::ShelfLayoutManager(ShelfWidget* shelf) |
| Shell::GetInstance()->AddShellObserver(this); |
| Shell::GetInstance()->lock_state_controller()->AddObserver(this); |
| aura::client::GetActivationClient(root_window_)->AddObserver(this); |
| + Shell::GetInstance()->session_state_delegate()->AddSessionStateObserver(this); |
| } |
| ShelfLayoutManager::~ShelfLayoutManager() { |
| @@ -740,11 +741,20 @@ void ShelfLayoutManager::UpdateBoundsAndOpacity( |
| status_bounds)); |
| SessionStateDelegate* session_state_delegate = |
| Shell::GetInstance()->session_state_delegate(); |
| - if (!state_.is_screen_locked && |
| - (session_state_delegate->IsActiveUserSessionStarted() || |
| - !keyboard_bounds_.IsEmpty())) { |
| - Shell::GetInstance()->SetDisplayWorkAreaInsets( |
| - root_window_, target_bounds.work_area_insets); |
| + if (!state_.is_screen_locked) { |
| + gfx::Insets insets; |
|
Mr4D (OOO till 08-26)
2014/04/10 01:33:08
By creating the insets they should be initialized
Nikita (slow)
2014/04/10 09:52:21
Done.
|
| + // If user session is blocked (login to new user session or add user to |
| + // the existing session - multi-profile) then give 100% of work area only if |
| + // keyboard is not shown. |
| + if (session_state_delegate->IsUserSessionBlocked()) { |
| + if (keyboard_bounds_.IsEmpty()) |
| + insets = gfx::Insets(); |
| + else |
| + insets = target_bounds.work_area_insets; |
| + } else { |
| + insets = target_bounds.work_area_insets; |
| + } |
| + Shell::GetInstance()->SetDisplayWorkAreaInsets(root_window_, insets); |
| } |
| } |
| @@ -1165,7 +1175,7 @@ void ShelfLayoutManager::OnKeyboardBoundsChanging(const gfx::Rect& new_bounds) { |
| // On login screen if keyboard has been just hidden, update bounds just once |
| // but ignore target_bounds.work_area_insets since shelf overlaps with login |
| // window. |
| - if (!session_state_delegate->IsActiveUserSessionStarted() && |
| + if (session_state_delegate->IsUserSessionBlocked() && |
| keyboard_is_about_to_hide) { |
| Shell::GetInstance()->SetDisplayWorkAreaInsets(root_window_, gfx::Insets()); |
| } |
| @@ -1200,4 +1210,12 @@ void ShelfLayoutManager::OnLockStateEvent(LockStateObserver::EventType event) { |
| } |
| } |
| +void ShelfLayoutManager::SessionStateChanged( |
| + SessionStateDelegate::SessionState state) { |
| + TargetBounds target_bounds; |
| + CalculateTargetBounds(state_, &target_bounds); |
| + UpdateBoundsAndOpacity(target_bounds, true, NULL); |
| + UpdateVisibilityState(); |
| +} |
| + |
| } // namespace ash |