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; |
} |