Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2248)

Unified Diff: athena/wm/window_manager_impl.cc

Issue 394683002: Use accelerator to switch overview mode (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « athena/wm/DEPS ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « athena/wm/DEPS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698