Index: ash/wm/maximize_mode/maximize_mode_window_manager.cc |
diff --git a/ash/wm/maximize_mode/maximize_mode_window_manager.cc b/ash/wm/maximize_mode/maximize_mode_window_manager.cc |
index 964f77a10c8017570e70fc9774297fe507f8e200..1b9f9dbadb4b8d20950c9b9d46af965a4f8013b9 100644 |
--- a/ash/wm/maximize_mode/maximize_mode_window_manager.cc |
+++ b/ash/wm/maximize_mode/maximize_mode_window_manager.cc |
@@ -18,7 +18,24 @@ |
namespace ash { |
+namespace { |
+ |
+// Exits overview mode if it is currently active. |
+void CancelOverview() { |
+ WindowSelectorController* controller = |
+ Shell::GetInstance()->window_selector_controller(); |
+ if (controller && controller->IsSelecting()) |
+ controller->OnSelectionCanceled(); |
+} |
+ |
+} // namespace |
+ |
MaximizeModeWindowManager::~MaximizeModeWindowManager() { |
+ // Overview mode needs to be ended before exiting maximize mode to prevent |
+ // transforming windows which are currently in |
+ // overview: http://crbug.com/366605 |
+ CancelOverview(); |
+ |
Shell::GetInstance()->RemoveShellObserver(this); |
Shell::GetScreen()->RemoveObserver(this); |
EnableBackdropBehindTopWindowOnEachDisplay(false); |
@@ -108,10 +125,7 @@ MaximizeModeWindowManager::MaximizeModeWindowManager() |
: backdrops_hidden_(false) { |
// The overview mode needs to be ended before the maximize mode is started. To |
// guarantee the proper order, it will be turned off from here. |
- WindowSelectorController* controller = |
- Shell::GetInstance()->window_selector_controller(); |
- if (controller && controller->IsSelecting()) |
- controller->OnSelectionCanceled(); |
+ CancelOverview(); |
MaximizeAllWindows(); |
AddWindowCreationObservers(); |