| Index: athena/wm/window_manager_impl.cc
|
| diff --git a/athena/wm/window_manager_impl.cc b/athena/wm/window_manager_impl.cc
|
| index 589da390733ec1ecf3999c24c0b16278b8b5d35c..6c1bc8736f5ae28b0d180da6a4fbe75d9a93c40f 100644
|
| --- a/athena/wm/window_manager_impl.cc
|
| +++ b/athena/wm/window_manager_impl.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "athena/wm/public/window_manager.h"
|
|
|
| +#include "athena/input/public/accelerator_manager.h"
|
| #include "athena/screen/public/screen_manager.h"
|
| #include "athena/wm/window_overview_mode.h"
|
| #include "base/logging.h"
|
| @@ -16,11 +17,14 @@ namespace {
|
|
|
| class WindowManagerImpl : public WindowManager,
|
| public WindowOverviewModeDelegate,
|
| - public aura::WindowObserver {
|
| + public aura::WindowObserver,
|
| + public AcceleratorHandler {
|
| public:
|
| WindowManagerImpl();
|
| virtual ~WindowManagerImpl();
|
|
|
| + void Init() { InstallAccelerators(); }
|
| +
|
| void Layout();
|
|
|
| // WindowManager:
|
| @@ -32,6 +36,19 @@ class WindowManagerImpl : public WindowManager,
|
| }
|
|
|
| private:
|
| + enum Command {
|
| + COMMAND_TOGGLE_OVERVIEW,
|
| + };
|
| +
|
| + void InstallAccelerators() {
|
| + const AcceleratorData accelerator_data[] = {
|
| + {TRIGGER_ON_PRESS, ui::VKEY_6, ui::EF_NONE, COMMAND_TOGGLE_OVERVIEW,
|
| + AF_NONE},
|
| + };
|
| + AcceleratorManager::Get()->RegisterAccelerators(
|
| + accelerator_data, arraysize(accelerator_data), this);
|
| + }
|
| +
|
| // WindowOverviewModeDelegate:
|
| virtual void OnSelectWindow(aura::Window* window) OVERRIDE {
|
| CHECK_EQ(container_.get(), window->parent());
|
| @@ -45,8 +62,19 @@ class WindowManagerImpl : public WindowManager,
|
| container_.reset();
|
| }
|
|
|
| + // AcceleratorHandler:
|
| + virtual bool IsCommandEnabled(int command_id) const OVERRIDE { return true; }
|
| + virtual bool OnAcceleratorFired(int command_id,
|
| + const ui::Accelerator& accelerator) OVERRIDE {
|
| + switch (command_id) {
|
| + case COMMAND_TOGGLE_OVERVIEW:
|
| + ToggleOverview();
|
| + break;
|
| + }
|
| + return true;
|
| + }
|
| +
|
| scoped_ptr<aura::Window> container_;
|
| - scoped_ptr<ui::EventHandler> temp_handler_;
|
| scoped_ptr<WindowOverviewMode> overview_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(WindowManagerImpl);
|
| @@ -82,37 +110,17 @@ class AthenaContainerLayoutManager : public aura::LayoutManager {
|
| DISALLOW_COPY_AND_ASSIGN(AthenaContainerLayoutManager);
|
| };
|
|
|
| -class TempEventHandler : public ui::EventHandler {
|
| - public:
|
| - TempEventHandler() {}
|
| - virtual ~TempEventHandler() {}
|
| -
|
| - private:
|
| - // ui::EventHandler:
|
| - virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE {
|
| - if (event->type() == ui::ET_KEY_PRESSED &&
|
| - event->key_code() == ui::VKEY_F6) {
|
| - instance->ToggleOverview();
|
| - }
|
| - }
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TempEventHandler);
|
| -};
|
| -
|
| WindowManagerImpl::WindowManagerImpl()
|
| - : container_(ScreenManager::Get()->CreateDefaultContainer("MainContainer")),
|
| - temp_handler_(new TempEventHandler()) {
|
| + : container_(
|
| + ScreenManager::Get()->CreateDefaultContainer("MainContainer")) {
|
| container_->SetLayoutManager(new AthenaContainerLayoutManager);
|
| container_->AddObserver(this);
|
| - container_->AddPreTargetHandler(temp_handler_.get());
|
| instance = this;
|
| }
|
|
|
| WindowManagerImpl::~WindowManagerImpl() {
|
| - if (container_) {
|
| - container_->RemovePreTargetHandler(temp_handler_.get());
|
| + if (container_)
|
| container_->RemoveObserver(this);
|
| - }
|
| container_.reset();
|
| instance = NULL;
|
| }
|
|
|