Index: athena/wm/window_manager_impl.cc |
diff --git a/athena/wm/window_manager_impl.cc b/athena/wm/window_manager_impl.cc |
index eb370c5aa47bed11222f5b038ebc7aac44de181d..04cd34643c5dd31b884b90aad87aa38b0f5da5ff 100644 |
--- a/athena/wm/window_manager_impl.cc |
+++ b/athena/wm/window_manager_impl.cc |
@@ -203,6 +203,10 @@ void WindowManagerImpl::SetInOverview(bool active) { |
if (active == in_overview) |
return; |
+ const AcceleratorData esc_accelerator_data = { |
+ TRIGGER_ON_PRESS, ui::VKEY_ESCAPE, ui::EF_NONE, CMD_EXIT_OVERVIEW, |
+ AF_NONE}; |
+ |
bezel_controller_->set_left_right_delegate( |
active ? NULL : split_view_controller_.get()); |
if (active) { |
@@ -213,9 +217,12 @@ void WindowManagerImpl::SetInOverview(bool active) { |
overview_ = WindowOverviewMode::Create( |
container_.get(), window_list_provider_.get(), |
split_view_controller_.get(), this); |
+ AcceleratorManager::Get()->RegisterAccelerator(esc_accelerator_data, this); |
} else { |
overview_.reset(); |
FOR_EACH_OBSERVER(WindowManagerObserver, observers_, OnOverviewModeExit()); |
+ AcceleratorManager::Get()->UnregisterAccelerator(esc_accelerator_data, |
+ this); |
} |
} |
@@ -304,6 +311,9 @@ bool WindowManagerImpl::IsCommandEnabled(int command_id) const { |
bool WindowManagerImpl::OnAcceleratorFired(int command_id, |
const ui::Accelerator& accelerator) { |
switch (command_id) { |
+ case CMD_EXIT_OVERVIEW: |
+ if (!IsOverviewModeActive()) |
+ break; // else fall through & Toggle |
case CMD_TOGGLE_OVERVIEW: |
ToggleOverview(); |
break; |