OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ash/accelerators/accelerator_controller.h" | 5 #include "ash/accelerators/accelerator_controller.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <iostream> | 9 #include <iostream> |
10 #include <string> | 10 #include <string> |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
80 | 80 |
81 bool DebugShortcutsEnabled() { | 81 bool DebugShortcutsEnabled() { |
82 #if defined(NDEBUG) | 82 #if defined(NDEBUG) |
83 return CommandLine::ForCurrentProcess()->HasSwitch( | 83 return CommandLine::ForCurrentProcess()->HasSwitch( |
84 switches::kAshDebugShortcuts); | 84 switches::kAshDebugShortcuts); |
85 #else | 85 #else |
86 return true; | 86 return true; |
87 #endif | 87 #endif |
88 } | 88 } |
89 | 89 |
90 bool HandleCycleWindowMRU(WindowCycleController::Direction direction, | 90 void HandleCycleBackwardMRU(const ui::Accelerator& accelerator) { |
James Cook
2013/09/04 23:16:46
These are the implementations from the old switch
| |
91 bool is_alt_down) { | 91 Shell* shell = Shell::GetInstance(); |
92 Shell::GetInstance()-> | 92 |
93 window_cycle_controller()->HandleCycleWindow(direction, is_alt_down); | 93 if (accelerator.key_code() == ui::VKEY_TAB) |
94 // Always report we handled the key, even if the window didn't change. | 94 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_PREVWINDOW_TAB); |
95 return true; | 95 |
96 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
97 switches::kAshEnableOverviewMode)) { | |
98 shell->window_selector_controller()->HandleCycleWindow( | |
99 WindowSelector::BACKWARD); | |
100 return; | |
101 } | |
102 shell->window_cycle_controller()->HandleCycleWindow( | |
103 WindowCycleController::BACKWARD, accelerator.IsAltDown()); | |
96 } | 104 } |
97 | 105 |
98 bool HandleCycleWindowOverviewMRU(WindowSelector::Direction direction) { | 106 void HandleCycleForwardMRU(const ui::Accelerator& accelerator) { |
99 Shell::GetInstance()-> | 107 Shell* shell = Shell::GetInstance(); |
100 window_selector_controller()->HandleCycleWindow(direction); | 108 |
101 return true; | 109 if (accelerator.key_code() == ui::VKEY_TAB) |
110 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_NEXTWINDOW_TAB); | |
111 | |
112 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
113 switches::kAshEnableOverviewMode)) { | |
114 shell->window_selector_controller()->HandleCycleWindow( | |
115 WindowSelector::FORWARD); | |
116 return; | |
117 } | |
118 shell->window_cycle_controller()->HandleCycleWindow( | |
119 WindowCycleController::FORWARD, accelerator.IsAltDown()); | |
102 } | 120 } |
103 | 121 |
104 void HandleCycleWindowLinear(CycleDirection direction) { | 122 void HandleCycleLinear(const ui::Accelerator& accelerator) { |
105 Shell::GetInstance()-> | 123 Shell* shell = Shell::GetInstance(); |
106 window_cycle_controller()->HandleLinearCycleWindow(); | |
James Cook
2013/09/04 23:16:46
Note that this ignores |direction|. Heh. :-)
| |
107 } | |
108 | 124 |
109 void ToggleOverviewMode() { | 125 // TODO(jamescook): When overview becomes the default the AcceleratorAction |
110 Shell::GetInstance()->window_selector_controller()->ToggleOverview(); | 126 // should be renamed from CYCLE_LINEAR to TOGGLE_OVERVIEW. |
127 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
128 switches::kAshEnableOverviewMode)) { | |
129 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_OVERVIEW_F5); | |
130 shell->window_selector_controller()->ToggleOverview(); | |
131 return; | |
132 } | |
133 if (accelerator.key_code() == ui::VKEY_MEDIA_LAUNCH_APP1) | |
134 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_NEXTWINDOW_F5); | |
135 shell->window_cycle_controller()->HandleLinearCycleWindow(); | |
111 } | 136 } |
112 | 137 |
113 bool HandleAccessibleFocusCycle(bool reverse) { | 138 bool HandleAccessibleFocusCycle(bool reverse) { |
114 if (!Shell::GetInstance()->delegate()->IsSpokenFeedbackEnabled()) | 139 if (!Shell::GetInstance()->delegate()->IsSpokenFeedbackEnabled()) |
115 return false; | 140 return false; |
116 aura::Window* active_window = ash::wm::GetActiveWindow(); | 141 aura::Window* active_window = ash::wm::GetActiveWindow(); |
117 if (!active_window) | 142 if (!active_window) |
118 return false; | 143 return false; |
119 views::Widget* widget = | 144 views::Widget* widget = |
120 views::Widget::GetWidgetForNativeWindow(active_window); | 145 views::Widget::GetWidgetForNativeWindow(active_window); |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
510 } | 535 } |
511 // Type of the previous accelerator. Used by NEXT_IME and DISABLE_CAPS_LOCK. | 536 // Type of the previous accelerator. Used by NEXT_IME and DISABLE_CAPS_LOCK. |
512 const ui::EventType previous_event_type = | 537 const ui::EventType previous_event_type = |
513 context_.previous_accelerator().type(); | 538 context_.previous_accelerator().type(); |
514 const ui::KeyboardCode previous_key_code = | 539 const ui::KeyboardCode previous_key_code = |
515 context_.previous_accelerator().key_code(); | 540 context_.previous_accelerator().key_code(); |
516 | 541 |
517 // You *MUST* return true when some action is performed. Otherwise, this | 542 // You *MUST* return true when some action is performed. Otherwise, this |
518 // function might be called *twice*, via BrowserView::PreHandleKeyboardEvent | 543 // function might be called *twice*, via BrowserView::PreHandleKeyboardEvent |
519 // and BrowserView::HandleKeyboardEvent, for a single accelerator press. | 544 // and BrowserView::HandleKeyboardEvent, for a single accelerator press. |
545 // | |
546 // If your accelerator invokes more than one line of code, please either | |
547 // implement it in your module's controller code (like TOGGLE_MIRROR_MODE | |
548 // below) or pull it into a HandleFoo() function above. | |
520 switch (action) { | 549 switch (action) { |
521 case ACCESSIBLE_FOCUS_NEXT: | 550 case ACCESSIBLE_FOCUS_NEXT: |
522 return HandleAccessibleFocusCycle(false); | 551 return HandleAccessibleFocusCycle(false); |
523 case ACCESSIBLE_FOCUS_PREVIOUS: | 552 case ACCESSIBLE_FOCUS_PREVIOUS: |
524 return HandleAccessibleFocusCycle(true); | 553 return HandleAccessibleFocusCycle(true); |
525 case CYCLE_BACKWARD_MRU: | 554 case CYCLE_BACKWARD_MRU: |
526 if (key_code == ui::VKEY_TAB) | 555 HandleCycleBackwardMRU(accelerator); |
527 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_PREVWINDOW_TAB); | 556 return true; |
528 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
529 switches::kAshEnableOverviewMode)) { | |
530 return HandleCycleWindowOverviewMRU(WindowSelector::BACKWARD); | |
531 } | |
532 return HandleCycleWindowMRU(WindowCycleController::BACKWARD, | |
533 accelerator.IsAltDown()); | |
534 case CYCLE_FORWARD_MRU: | 557 case CYCLE_FORWARD_MRU: |
535 if (key_code == ui::VKEY_TAB) | 558 HandleCycleForwardMRU(accelerator); |
536 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_NEXTWINDOW_TAB); | |
537 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
538 switches::kAshEnableOverviewMode)) { | |
539 return HandleCycleWindowOverviewMRU(WindowSelector::FORWARD); | |
540 } | |
541 return HandleCycleWindowMRU(WindowCycleController::FORWARD, | |
542 accelerator.IsAltDown()); | |
543 case CYCLE_BACKWARD_LINEAR: | |
544 if (CommandLine::ForCurrentProcess()->HasSwitch( | |
545 switches::kAshEnableOverviewMode)) { | |
546 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_OVERVIEW_F5); | |
547 ToggleOverviewMode(); | |
548 return true; | |
549 } | |
550 if (key_code == ui::VKEY_MEDIA_LAUNCH_APP1) | |
551 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_PREVWINDOW_F5); | |
552 HandleCycleWindowLinear(CYCLE_BACKWARD); | |
553 return true; | 559 return true; |
554 case CYCLE_FORWARD_LINEAR: | 560 case CYCLE_LINEAR: |
555 if (CommandLine::ForCurrentProcess()->HasSwitch( | 561 HandleCycleLinear(accelerator); |
556 switches::kAshEnableOverviewMode)) { | |
557 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_OVERVIEW_F5); | |
558 ToggleOverviewMode(); | |
559 return true; | |
560 } | |
561 if (key_code == ui::VKEY_MEDIA_LAUNCH_APP1) | |
562 shell->delegate()->RecordUserMetricsAction(UMA_ACCEL_NEXTWINDOW_F5); | |
563 HandleCycleWindowLinear(CYCLE_FORWARD); | |
564 return true; | 562 return true; |
565 #if defined(OS_CHROMEOS) | 563 #if defined(OS_CHROMEOS) |
566 case ADD_REMOVE_DISPLAY: | 564 case ADD_REMOVE_DISPLAY: |
567 Shell::GetInstance()->display_manager()->AddRemoveDisplay(); | 565 Shell::GetInstance()->display_manager()->AddRemoveDisplay(); |
568 return true; | 566 return true; |
569 case TOGGLE_MIRROR_MODE: | 567 case TOGGLE_MIRROR_MODE: |
570 Shell::GetInstance()->display_controller()->ToggleMirrorMode(); | 568 Shell::GetInstance()->display_controller()->ToggleMirrorMode(); |
571 return true; | 569 return true; |
572 case LOCK_SCREEN: | 570 case LOCK_SCREEN: |
573 if (key_code == ui::VKEY_L) | 571 if (key_code == ui::VKEY_L) |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
711 HandleKeyboardBrightnessDown(accelerator); | 709 HandleKeyboardBrightnessDown(accelerator); |
712 break; | 710 break; |
713 case KEYBOARD_BRIGHTNESS_UP: | 711 case KEYBOARD_BRIGHTNESS_UP: |
714 if (keyboard_brightness_control_delegate_) | 712 if (keyboard_brightness_control_delegate_) |
715 return keyboard_brightness_control_delegate_-> | 713 return keyboard_brightness_control_delegate_-> |
716 HandleKeyboardBrightnessUp(accelerator); | 714 HandleKeyboardBrightnessUp(accelerator); |
717 break; | 715 break; |
718 case VOLUME_MUTE: | 716 case VOLUME_MUTE: |
719 return shell->system_tray_delegate()->GetVolumeControlDelegate()-> | 717 return shell->system_tray_delegate()->GetVolumeControlDelegate()-> |
720 HandleVolumeMute(accelerator); | 718 HandleVolumeMute(accelerator); |
721 break; | |
722 case VOLUME_DOWN: | 719 case VOLUME_DOWN: |
723 return shell->system_tray_delegate()->GetVolumeControlDelegate()-> | 720 return shell->system_tray_delegate()->GetVolumeControlDelegate()-> |
724 HandleVolumeDown(accelerator); | 721 HandleVolumeDown(accelerator); |
725 break; | |
726 case VOLUME_UP: | 722 case VOLUME_UP: |
727 return shell->system_tray_delegate()->GetVolumeControlDelegate()-> | 723 return shell->system_tray_delegate()->GetVolumeControlDelegate()-> |
728 HandleVolumeUp(accelerator); | 724 HandleVolumeUp(accelerator); |
729 break; | |
730 case FOCUS_LAUNCHER: | 725 case FOCUS_LAUNCHER: |
731 return shell->focus_cycler()->FocusWidget( | 726 return shell->focus_cycler()->FocusWidget( |
732 Launcher::ForPrimaryDisplay()->shelf_widget()); | 727 Launcher::ForPrimaryDisplay()->shelf_widget()); |
733 break; | |
734 case FOCUS_NEXT_PANE: | 728 case FOCUS_NEXT_PANE: |
735 return HandleRotatePaneFocus(Shell::FORWARD); | 729 return HandleRotatePaneFocus(Shell::FORWARD); |
736 case FOCUS_PREVIOUS_PANE: | 730 case FOCUS_PREVIOUS_PANE: |
737 return HandleRotatePaneFocus(Shell::BACKWARD); | 731 return HandleRotatePaneFocus(Shell::BACKWARD); |
738 case SHOW_KEYBOARD_OVERLAY: | 732 case SHOW_KEYBOARD_OVERLAY: |
739 ash::Shell::GetInstance()->delegate()->ShowKeyboardOverlay(); | 733 ash::Shell::GetInstance()->delegate()->ShowKeyboardOverlay(); |
740 return true; | 734 return true; |
741 case SHOW_OAK: | 735 case SHOW_OAK: |
742 if (CommandLine::ForCurrentProcess()->HasSwitch( | 736 if (CommandLine::ForCurrentProcess()->HasSwitch( |
743 switches::kAshEnableOak)) { | 737 switches::kAshEnableOak)) { |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
985 keyboard_brightness_control_delegate) { | 979 keyboard_brightness_control_delegate) { |
986 keyboard_brightness_control_delegate_ = | 980 keyboard_brightness_control_delegate_ = |
987 keyboard_brightness_control_delegate.Pass(); | 981 keyboard_brightness_control_delegate.Pass(); |
988 } | 982 } |
989 | 983 |
990 bool AcceleratorController::CanHandleAccelerators() const { | 984 bool AcceleratorController::CanHandleAccelerators() const { |
991 return true; | 985 return true; |
992 } | 986 } |
993 | 987 |
994 } // namespace ash | 988 } // namespace ash |
OLD | NEW |