Index: ash/common/wm_shell.cc |
diff --git a/ash/common/wm_shell.cc b/ash/common/wm_shell.cc |
index 7f4f6838c81b86ac8ba0a2454a7f6970164a5456..4580f99b9ae90401975520c9a23bf760bb4212d6 100644 |
--- a/ash/common/wm_shell.cc |
+++ b/ash/common/wm_shell.cc |
@@ -151,11 +151,6 @@ void WmShell::CreateShelf() { |
root_window->GetRootWindowController()->CreateShelf(); |
} |
-void WmShell::ShowShelf() { |
- for (WmWindow* root_window : GetAllRootWindows()) |
- root_window->GetRootWindowController()->ShowShelf(); |
-} |
- |
void WmShell::CreateShelfDelegate() { |
// May be called multiple times as shelves are created and destroyed. |
if (shelf_delegate_) |
@@ -272,9 +267,12 @@ WmShell::WmShell(std::unique_ptr<ShellDelegate> shell_delegate) |
keyboard_brightness_control_delegate_.reset(new KeyboardBrightnessController); |
vpn_list_ = base::MakeUnique<VpnList>(); |
#endif |
+ session_controller_->AddSessionStateObserver(this); |
} |
-WmShell::~WmShell() {} |
+WmShell::~WmShell() { |
+ session_controller_->RemoveSessionStateObserver(this); |
+} |
WmRootWindowController* WmShell::GetPrimaryRootWindowController() { |
return GetPrimaryRootWindow()->GetRootWindowController(); |
@@ -415,4 +413,14 @@ void WmShell::SetAcceleratorController( |
accelerator_controller_ = std::move(accelerator_controller); |
} |
+void WmShell::SessionStateChanged(session_manager::SessionState state) { |
+ // Create the shelf when the first session becomes active. There's no need to |
+ // recreate it when multiprofile sessions are added. |
+ if (state != session_manager::SessionState::ACTIVE || first_session_active_) |
+ return; |
+ |
+ WmShell::Get()->CreateShelf(); |
msw
2016/12/20 15:37:30
Isn't WmShell::Get() equivalent to |this|, and not
James Cook
2016/12/20 17:27:19
Whoops, done.
|
+ first_session_active_ = true; |
msw
2016/12/20 15:37:30
Should this ever be reset to false, eg. when the u
James Cook
2016/12/20 17:27:19
Changed to always attempt to create the shelf (whi
|
+} |
+ |
} // namespace ash |