Chromium Code Reviews| Index: ash/wm/panels/panel_layout_manager.cc |
| diff --git a/ash/wm/panels/panel_layout_manager.cc b/ash/wm/panels/panel_layout_manager.cc |
| index ccbf450f0c3d361c8c37461006e60a15a4099478..b9ee368bad6aa27445bb37c88d877840f54ca44a 100644 |
| --- a/ash/wm/panels/panel_layout_manager.cc |
| +++ b/ash/wm/panels/panel_layout_manager.cc |
| @@ -15,6 +15,7 @@ |
| #include "ash/shelf/shelf_widget.h" |
| #include "ash/shell.h" |
| #include "ash/shell_window_ids.h" |
| +#include "ash/wm/overview/window_selector_controller.h" |
| #include "ash/wm/window_animations.h" |
| #include "ash/wm/window_state.h" |
| #include "ash/wm/window_util.h" |
| @@ -263,7 +264,8 @@ PanelLayoutManager::PanelLayoutManager(aura::Window* panel_container) |
| shelf_(NULL), |
| shelf_layout_manager_(NULL), |
| last_active_panel_(NULL), |
| - weak_factory_(this) { |
| + weak_factory_(this), |
| + overview_mode_active_(false) { |
| DCHECK(panel_container); |
| aura::client::GetActivationClient(Shell::GetPrimaryRootWindow())-> |
| AddObserver(this); |
| @@ -464,6 +466,15 @@ void PanelLayoutManager::OnShelfIconPositionsChanged() { |
| //////////////////////////////////////////////////////////////////////////////// |
| // PanelLayoutManager, ash::ShellObserver implementation: |
| +void PanelLayoutManager::OnOverviewModeStarting() { |
| + overview_mode_active_ = true; |
| +} |
| + |
| +void PanelLayoutManager::OnOverviewModeEnding() { |
| + overview_mode_active_ = false; |
| + Relayout(); |
| +} |
| + |
| void PanelLayoutManager::OnShelfAlignmentChanged(aura::Window* root_window) { |
| if (panel_container_->GetRootWindow() == root_window) |
| Relayout(); |
| @@ -599,7 +610,12 @@ void PanelLayoutManager::Relayout() { |
| if (!shelf_ || !shelf_->shelf_widget()) |
| return; |
| - if (in_layout_) |
| + // Suppress layouts during overview mode because changing window bounds |
| + // interfered with overview mode animations. However, layouts need to be done |
| + // when the WindowSelectorController is restoring minimized windows so that |
| + // they actually become visible. |
| + if (in_layout_ || (overview_mode_active_ && !Shell::GetInstance()-> |
|
jonross
2015/01/15 19:39:42
Instead of tracking this, can we poll IsSelecting(
bruthig
2015/01/16 19:54:43
Done.
|
| + window_selector_controller()->IsRestoringMinimizedWindows())) |
| return; |
| base::AutoReset<bool> auto_reset_in_layout(&in_layout_, true); |