Index: athena/wm/window_manager_impl.cc |
diff --git a/athena/wm/window_manager_impl.cc b/athena/wm/window_manager_impl.cc |
index 35722c1adfa69f27a7743b3c6003d85468c88051..59e726f13fa6395c12997c748684f958bfacab97 100644 |
--- a/athena/wm/window_manager_impl.cc |
+++ b/athena/wm/window_manager_impl.cc |
@@ -193,23 +193,35 @@ void WindowManagerImpl::ToggleSplitView() { |
} |
} |
-void WindowManagerImpl::ToggleOverview() { |
- if (IsOverviewModeActive()) { |
- SetInOverview(false); |
- |
- // Activate the window which was active prior to entering overview. |
- const aura::Window::Windows windows = |
- window_list_provider_->GetWindowList(); |
- if (!windows.empty()) { |
- aura::Window* window = windows.back(); |
- // Show the window in case the exit overview animation has finished and |
- // |window| was hidden. |
- window->Show(); |
- |
- wm::ActivateWindow(window); |
- } |
- } else { |
- SetInOverview(true); |
+void WindowManagerImpl::EnterOverview() { |
+ if (IsOverviewModeActive()) |
+ return; |
+ |
+ bezel_controller_->set_left_right_delegate(NULL); |
+ FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeEnter()); |
+ |
+ // Note: The window_list_provider_ resembles the exact window list of the |
+ // container, so no re-stacking is required before showing the OverviewMode. |
+ overview_ = WindowOverviewMode::Create( |
+ container_.get(), window_list_provider_.get(), |
+ split_view_controller_.get(), this); |
+} |
+ |
+void WindowManagerImpl::ExitOverview() { |
+ if (!IsOverviewModeActive()) |
+ return; |
+ |
+ ExitOverviewNoActivate(); |
+ |
+ // Activate the window which was active prior to entering overview. |
+ const aura::Window::Windows windows = window_list_provider_->GetWindowList(); |
+ if (!windows.empty()) { |
+ aura::Window* window_to_activate = windows.back(); |
+ |
+ // Show the window in case the exit overview animation has finished and |
+ // |window| was hidden. |
+ window_to_activate->Show(); |
+ wm::ActivateWindow(window_to_activate); |
} |
} |
@@ -217,25 +229,13 @@ bool WindowManagerImpl::IsOverviewModeActive() { |
return overview_; |
} |
-void WindowManagerImpl::SetInOverview(bool active) { |
- bool in_overview = !!overview_; |
- if (active == in_overview) |
+void WindowManagerImpl::ExitOverviewNoActivate() { |
+ if (!IsOverviewModeActive()) |
return; |
- bezel_controller_->set_left_right_delegate( |
- active ? NULL : split_view_controller_.get()); |
- if (active) { |
- FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeEnter()); |
- |
- // Note: The window_list_provider_ resembles the exact window list of the |
- // container, so no re-stacking is required before showing the OverviewMode. |
- overview_ = WindowOverviewMode::Create( |
- container_.get(), window_list_provider_.get(), |
- split_view_controller_.get(), this); |
- } else { |
- overview_.reset(); |
- FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeExit()); |
- } |
+ bezel_controller_->set_left_right_delegate(split_view_controller_.get()); |
+ overview_.reset(); |
+ FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeExit()); |
} |
void WindowManagerImpl::InstallAccelerators() { |
@@ -266,7 +266,7 @@ WindowListProvider* WindowManagerImpl::GetWindowListProvider() { |
} |
void WindowManagerImpl::OnSelectWindow(aura::Window* window) { |
- SetInOverview(false); |
+ ExitOverviewNoActivate(); |
// Show the window in case the exit overview animation has finished and |
// |window| was hidden. |
@@ -305,7 +305,7 @@ void WindowManagerImpl::OnSelectWindow(aura::Window* window) { |
void WindowManagerImpl::OnSelectSplitViewWindow(aura::Window* left, |
aura::Window* right, |
aura::Window* to_activate) { |
- SetInOverview(false); |
+ ExitOverviewNoActivate(); |
FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnSplitViewModeEnter()); |
split_view_controller_->ActivateSplitMode(left, right, to_activate); |
} |
@@ -323,7 +323,10 @@ bool WindowManagerImpl::OnAcceleratorFired(int command_id, |
const ui::Accelerator& accelerator) { |
switch (command_id) { |
case CMD_TOGGLE_OVERVIEW: |
- ToggleOverview(); |
+ if (IsOverviewModeActive()) |
+ ExitOverview(); |
+ else |
+ EnterOverview(); |
break; |
case CMD_TOGGLE_SPLIT_VIEW: |
ToggleSplitView(); |