Index: ash/accelerators/accelerator_controller.cc |
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc |
index b7a51cfb50a6a5ea6b9fa8f107c11f879a592fe9..f660addc64135352d09717cdaa688fedaf2ed077 100644 |
--- a/ash/accelerators/accelerator_controller.cc |
+++ b/ash/accelerators/accelerator_controller.cc |
@@ -236,6 +236,17 @@ bool HandleMagnifyScreen(int delta_index) { |
return true; |
} |
+bool HandleMagnifyScreenScroll( |
+ MagnificationController::ScrollDirection direction) { |
+ MagnificationController* controller = |
+ ash::Shell::GetInstance()->magnification_controller(); |
+ if (controller->IsEnabled()) { |
+ controller->SetScrollDirection(direction); |
+ return true; |
+ } |
+ return false; |
+} |
+ |
bool HandleMediaNextTrack() { |
Shell::GetInstance()->media_delegate()->HandleMediaNextTrack(); |
return true; |
@@ -798,7 +809,7 @@ void AcceleratorController::Init() { |
for (size_t i = 0; i < kActionsAllowedAtModalWindowLength; ++i) |
actions_allowed_at_modal_window_.insert(kActionsAllowedAtModalWindow[i]); |
for (size_t i = 0; i < kReservedActionsLength; ++i) |
- reserved_actions_.insert(kReservedActions[i]); |
+ AddReservedAction(kReservedActions[i]); |
for (size_t i = 0; i < kNonrepeatableActionsLength; ++i) |
nonrepeatable_actions_.insert(kNonrepeatableActions[i]); |
for (size_t i = 0; i < kActionsAllowedInAppModeLength; ++i) |
@@ -815,7 +826,7 @@ void AcceleratorController::Init() { |
if (DebugShortcutsEnabled()) { |
RegisterAccelerators(kDebugAcceleratorData, kDebugAcceleratorDataLength); |
for (size_t i = 0; i < kReservedDebugActionsLength; ++i) |
- reserved_actions_.insert(kReservedDebugActions[i]); |
+ AddReservedAction(kReservedDebugActions[i]); |
} |
#if defined(OS_CHROMEOS) |
@@ -824,6 +835,20 @@ void AcceleratorController::Init() { |
#endif |
} |
+void AcceleratorController::InstallMagnifierAccelerators() { |
+ RegisterAccelerators(kMagnifierAcceleratorData, |
+ kMagnifierAcceleratorDataLength); |
+ for (size_t i = 0; i < kMagnifierAcceleratorDataLength; i++) |
+ AddReservedAction(kMagnifierAcceleratorData[i].action); |
+} |
+ |
+void AcceleratorController::UninstallMagnifierAccelerators() { |
+ UnregisterAccelerators(kMagnifierAcceleratorData, |
+ kMagnifierAcceleratorDataLength); |
+ for (size_t i = 0; i < kMagnifierAcceleratorDataLength; i++) |
+ RemoveReservedAction(kMagnifierAcceleratorData[i].action); |
+} |
+ |
void AcceleratorController::Register(const ui::Accelerator& accelerator, |
ui::AcceleratorTarget* target) { |
accelerator_manager_->Register(accelerator, |
@@ -1117,6 +1142,16 @@ bool AcceleratorController::PerformAction(int action, |
return HandleMagnifyScreen(1); |
case MAGNIFY_SCREEN_ZOOM_OUT: |
return HandleMagnifyScreen(-1); |
+ case MAGNIFY_SCREEN_UP: |
+ return HandleMagnifyScreenScroll(MagnificationController::SCROLL_UP); |
+ case MAGNIFY_SCREEN_DOWN: |
+ return HandleMagnifyScreenScroll(MagnificationController::SCROLL_DOWN); |
+ case MAGNIFY_SCREEN_LEFT: |
+ return HandleMagnifyScreenScroll(MagnificationController::SCROLL_LEFT); |
+ case MAGNIFY_SCREEN_RIGHT: |
+ return HandleMagnifyScreenScroll(MagnificationController::SCROLL_RIGHT); |
+ case MAGNIFY_SCREEN_STOP_SCROLL: |
+ return HandleMagnifyScreenScroll(MagnificationController::SCROLL_NONE); |
case MEDIA_NEXT_TRACK: |
return HandleMediaNextTrack(); |
case MEDIA_PLAY_PAUSE: |
@@ -1201,6 +1236,33 @@ void AcceleratorController::RegisterAccelerators( |
} |
} |
+void AcceleratorController::UnregisterAccelerators( |
+ const AcceleratorData accelerators[], |
+ size_t accelerators_length) { |
+ for (size_t i = 0; i < accelerators_length; ++i) { |
+ ui::Accelerator accelerator(accelerators[i].keycode, |
+ accelerators[i].modifiers); |
+ accelerator.set_type(accelerators[i].trigger_on_press ? |
+ ui::ET_KEY_PRESSED : ui::ET_KEY_RELEASED); |
+ Unregister(accelerator, this); |
+ std::map<ui::Accelerator, int>::const_iterator it = |
+ accelerators_.find(accelerator); |
+ DCHECK(it != accelerators_.end()); |
+ accelerators_.erase(it); |
+ } |
+} |
+ |
+void AcceleratorController::AddReservedAction(AcceleratorAction action) { |
+ if (reserved_actions_.find(action) == reserved_actions_.end()) |
+ reserved_actions_.insert(action); |
+} |
+ |
+void AcceleratorController::RemoveReservedAction(AcceleratorAction action) { |
+ std::set<int>::const_iterator it = reserved_actions_.find(action); |
+ if (it != reserved_actions_.end()) |
+ reserved_actions_.erase(it); |
+} |
+ |
void AcceleratorController::SetKeyboardBrightnessControlDelegate( |
scoped_ptr<KeyboardBrightnessControlDelegate> |
keyboard_brightness_control_delegate) { |