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

Unified Diff: ui/aura_shell/shell_accelerator_controller.cc

Issue 8689003: Register global accelerators and add placeholders for handling them. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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
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;
}
« ui/aura_shell/shell_accelerator_controller.h ('K') | « ui/aura_shell/shell_accelerator_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698