Chromium Code Reviews| Index: ui/aura_shell/shell_accelerator_controller.cc |
| diff --git a/ui/aura_shell/shell_accelerator_controller.cc b/ui/aura_shell/shell_accelerator_controller.cc |
| index 9c67a9d53a09f6d8caf9b3729108d3933f96ddf1..777413fa57c60774d0ed1fac8de17ff5175c6f35 100644 |
| --- a/ui/aura_shell/shell_accelerator_controller.cc |
| +++ b/ui/aura_shell/shell_accelerator_controller.cc |
| @@ -4,6 +4,7 @@ |
| #include "ui/aura_shell/shell_accelerator_controller.h" |
| +#include "base/logging.h" |
| #include "ui/aura/desktop.h" |
| #include "ui/aura/event.h" |
| #include "ui/aura_shell/shell.h" |
| @@ -15,31 +16,122 @@ |
| namespace { |
| +enum AcceleratorAction { |
| + kActivateBrowserByIndex, |
| + kActivateLastBrowser, |
| + kCloseFocusedNonChromeWindow, |
| + kCycleBackward, |
| + kCycleFowrard, |
| + kLaunchTerminal, |
| + kResizeLeft, |
| + kResizeRight, |
| + kTakeRegionScreenshot, |
| + kTakeRootScreenshot, |
| + kToggleMaximized, |
|
Daniel Erat
2011/11/28 16:39:54
many of these are related to UI that i don't think
mazda
2011/11/29 15:19:35
OK. I hold off most of them for now.
We also need
Daniel Erat
2011/11/29 16:46:00
yeah, i'm okay with leaving screenshot-taking in s
|
| +#if !defined(NDEBUG) |
| + kRotateScreen, |
| + kToggleClientWindowDebugging, |
| + kToggleDamageDebugging, |
| + kToggleFullScreen, |
| + kToggleProfiler, |
|
Daniel Erat
2011/11/28 16:39:54
kToggleClientWindowDebugging, kToggleDamageDebuggi
mazda
2011/11/29 15:19:35
Done.
|
| +#endif |
| +}; |
| + |
| // Acceleraters handled by ShellAcceleratorController. |
| struct AcceleratorData { |
| ui::KeyboardCode keycode; |
| bool shift; |
| bool ctrl; |
| bool alt; |
| + AcceleratorAction action; |
| } kAcceleratorData[] = { |
| - { ui::VKEY_F11, false, false, false }, |
| - { ui::VKEY_HOME, false, true, false }, |
| + { ui::VKEY_1, false, false, true, kActivateBrowserByIndex }, |
| + { ui::VKEY_2, false, false, true, kActivateBrowserByIndex }, |
| + { ui::VKEY_3, false, false, true, kActivateBrowserByIndex }, |
| + { ui::VKEY_4, false, false, true, kActivateBrowserByIndex }, |
| + { ui::VKEY_5, false, false, true, kActivateBrowserByIndex }, |
| + { ui::VKEY_6, false, false, true, kActivateBrowserByIndex }, |
| + { ui::VKEY_7, false, false, true, kActivateBrowserByIndex }, |
| + { ui::VKEY_8, false, false, true, kActivateBrowserByIndex }, |
| + { ui::VKEY_9, false, false, true, kActivateLastBrowser }, |
| + { ui::VKEY_W, true, true, false, kCloseFocusedNonChromeWindow }, |
| + { ui::VKEY_TAB, true, false, true, kCycleBackward }, |
| + { ui::VKEY_TAB, false, false, true, kCycleFowrard }, |
| + { ui::VKEY_T, false, true, true, kLaunchTerminal }, |
| + { ui::VKEY_OEM_COMMA, false, false, true, kResizeLeft }, |
| + { ui::VKEY_OEM_PERIOD, false, false, true, kResizeRight }, |
| + { ui::VKEY_F5, true, true, false, kTakeRegionScreenshot }, |
| + { ui::VKEY_PRINT, true, false, false, kTakeRegionScreenshot }, |
| + { ui::VKEY_F5, false, true, false, kTakeRootScreenshot }, |
| + { ui::VKEY_PRINT, false, false, false, kTakeRootScreenshot }, |
| + { ui::VKEY_F5, false, false, false, kToggleMaximized }, |
| +#if !defined(NDEBUG) |
| + { ui::VKEY_HOME, false, true, false, kRotateScreen }, |
| + { ui::VKEY_W, true, true, true, kToggleClientWindowDebugging }, |
| + { ui::VKEY_D, true, true, true, kToggleDamageDebugging }, |
| + { ui::VKEY_F11, false, false, false, kToggleFullScreen }, |
| + { ui::VKEY_P, true, true, true, kToggleProfiler }, |
| +#endif |
| }; |
| -// Registers the accelerators with ShellAcceleratorController. |
| -void RegisterAccelerators(aura_shell::ShellAcceleratorController* controller) { |
| - for (size_t i = 0; i < arraysize(kAcceleratorData); ++i) { |
| - controller->Register(ui::Accelerator(kAcceleratorData[i].keycode, |
| - kAcceleratorData[i].shift, |
| - kAcceleratorData[i].ctrl, |
| - kAcceleratorData[i].alt), |
| - controller); |
| - } |
| +bool ActivateBrowserByIndex(int index) { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool ActivateLastBrowser() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool CloseFocusedNonChromeWindow() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool CycleBackward() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool CycleFowrard() { |
|
Ben Goodger (Google)
2011/11/28 16:40:15
Forward
mazda
2011/11/29 15:19:35
Done.
|
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool LaunchTerminal() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool ResizeLeft() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool ResizeRight() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool TakeRegionScreenshot() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool TakeRootScreenshot() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool ToggleMaximized() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| } |
| #if !defined(NDEBUG) |
| // Rotates the screen. |
| -void RotateScreen() { |
| +bool RotateScreen() { |
| static int i = 0; |
| int delta = 0; |
| switch (i) { |
| @@ -66,6 +158,27 @@ void RotateScreen() { |
| screen_rotation->AddObserver(aura::Desktop::GetInstance()); |
| aura::Desktop::GetInstance()->layer()->GetAnimator()->ScheduleAnimation( |
| screen_rotation.release()); |
| + return true; |
| +} |
| + |
| +bool ToggleClientWindowDebugging() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool ToggleDamageDebugging() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +bool ToggleFullScreen() { |
| + aura::Desktop::GetInstance()->ToggleFullScreen(); |
| + return true; |
| +} |
| + |
| +bool ToggleProfiler() { |
| + NOTIMPLEMENTED(); |
| + return false; |
| } |
| #endif |
| @@ -78,12 +191,24 @@ namespace aura_shell { |
| ShellAcceleratorController::ShellAcceleratorController() |
| : accelerator_manager_(new ui::AcceleratorManager) { |
| - RegisterAccelerators(this); |
| + Init(); |
| } |
| ShellAcceleratorController::~ShellAcceleratorController() { |
| } |
| +void ShellAcceleratorController::Init() { |
| + for (size_t i = 0; i < arraysize(kAcceleratorData); ++i) { |
| + ui::Accelerator accelerator(kAcceleratorData[i].keycode, |
| + kAcceleratorData[i].shift, |
| + kAcceleratorData[i].ctrl, |
| + kAcceleratorData[i].alt); |
| + Register(accelerator, this); |
| + accelerators_.insert(std::make_pair(accelerator, |
| + kAcceleratorData[i].action)); |
| + } |
| +} |
| + |
| void ShellAcceleratorController::Register( |
| const ui::Accelerator& accelerator, |
| ui::AcceleratorTarget* target) { |
| @@ -110,16 +235,47 @@ bool ShellAcceleratorController::Process(const ui::Accelerator& accelerator) { |
| bool ShellAcceleratorController::AcceleratorPressed( |
| const ui::Accelerator& accelerator) { |
| + std::map<ui::Accelerator, int>::const_iterator i = |
| + accelerators_.find(accelerator); |
| + DCHECK(i != accelerators_.end()); |
| + switch (static_cast<AcceleratorAction>(i->second)) { |
| + case kActivateBrowserByIndex: |
| + return ActivateBrowserByIndex(accelerator.key_code() - ui::VKEY_1); |
| + case kActivateLastBrowser: |
| + return ActivateLastBrowser(); |
| + case kCloseFocusedNonChromeWindow: |
| + return CloseFocusedNonChromeWindow(); |
| + case kCycleBackward: |
| + return CycleBackward(); |
| + case kCycleFowrard: |
| + return CycleFowrard(); |
| + case kLaunchTerminal: |
| + return LaunchTerminal(); |
| + case kResizeLeft: |
| + return ResizeLeft(); |
| + case kResizeRight: |
| + return ResizeRight(); |
| + case kTakeRegionScreenshot: |
| + return TakeRegionScreenshot(); |
| + case kTakeRootScreenshot: |
| + return TakeRootScreenshot(); |
| + case kToggleMaximized: |
| + return ToggleMaximized(); |
| #if !defined(NDEBUG) |
| - if (accelerator.key_code() == ui::VKEY_F11) { |
| - aura::Desktop::GetInstance()->ToggleFullScreen(); |
| - return true; |
| - } else if (accelerator.key_code() == ui::VKEY_HOME && |
| - accelerator.IsCtrlDown()) { |
| - RotateScreen(); |
| - return true; |
| - } |
| + case kRotateScreen: |
| + return RotateScreen(); |
| + case kToggleClientWindowDebugging: |
| + return ToggleClientWindowDebugging(); |
| + case kToggleDamageDebugging: |
| + return ToggleDamageDebugging(); |
| + case kToggleFullScreen: |
| + return ToggleFullScreen(); |
| + case kToggleProfiler: |
| + return ToggleProfiler(); |
| #endif |
| + default: |
| + NOTREACHED(); |
| + } |
| return false; |
| } |