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 |