| Index: ash/common/shelf/shelf_widget.cc
|
| diff --git a/ash/common/shelf/shelf_widget.cc b/ash/common/shelf/shelf_widget.cc
|
| index e80b8bf997f3d9c59a9f5e7e0ff9dd532c621755..d735e5897c17a0ddbd815142ed7698def34e053b 100644
|
| --- a/ash/common/shelf/shelf_widget.cc
|
| +++ b/ash/common/shelf/shelf_widget.cc
|
| @@ -331,6 +331,12 @@ void ShelfWidget::PostCreateShelf() {
|
| // Ensure the newly created |shelf_| gets current values.
|
| background_animator_.Initialize(this);
|
|
|
| + // TODO(jamescook): The IsActiveUserSessionStarted() check may not be needed
|
| + // because the shelf is only created after the first user session is active.
|
| + // The ShelfView seems to always be visible after login. At the lock screen
|
| + // the shelf is hidden because its container is hidden. During auto-hide it is
|
| + // hidden because ShelfWidget is transparent. Some of the ShelfView visibility
|
| + // code could be simplified. http://crbug.com/674773
|
| shelf_view_->SetVisible(
|
| WmShell::Get()->GetSessionStateDelegate()->IsActiveUserSessionStarted());
|
| shelf_layout_manager_->LayoutShelf();
|
| @@ -342,11 +348,6 @@ bool ShelfWidget::IsShelfVisible() const {
|
| return shelf_view_ && shelf_view_->visible();
|
| }
|
|
|
| -void ShelfWidget::SetShelfVisibility(bool visible) {
|
| - if (shelf_view_)
|
| - shelf_view_->SetVisible(visible);
|
| -}
|
| -
|
| bool ShelfWidget::IsShowingAppList() const {
|
| return GetAppListButton() && GetAppListButton()->is_showing_app_list();
|
| }
|
| @@ -388,6 +389,9 @@ void ShelfWidget::Shutdown() {
|
| }
|
|
|
| void ShelfWidget::UpdateIconPositionForPanel(WmWindow* panel) {
|
| + if (!shelf_view_)
|
| + return;
|
| +
|
| WmWindow* shelf_window = WmLookup::Get()->GetWindowForWidget(this);
|
| shelf_view_->UpdatePanelIconPosition(
|
| panel->GetIntProperty(WmWindowProperty::SHELF_ID),
|
| @@ -396,6 +400,11 @@ void ShelfWidget::UpdateIconPositionForPanel(WmWindow* panel) {
|
| }
|
|
|
| gfx::Rect ShelfWidget::GetScreenBoundsOfItemIconForWindow(WmWindow* window) {
|
| + // Window animations can be triggered during session restore before the shelf
|
| + // view is created. In that case, return default empty bounds.
|
| + if (!shelf_view_)
|
| + return gfx::Rect();
|
| +
|
| ShelfID id = window->GetIntProperty(WmWindowProperty::SHELF_ID);
|
| gfx::Rect bounds(shelf_view_->GetIdealBoundsOfItemIcon(id));
|
| gfx::Point screen_origin;
|
|
|