| 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/common/accelerators/accelerator_controller.h" | 5 #include "ash/common/accelerators/accelerator_controller.h" |
| 6 | 6 |
| 7 #include "ash/common/accelerators/accelerator_commands.h" | 7 #include "ash/common/accelerators/accelerator_commands.h" |
| 8 #include "ash/common/accelerators/accelerator_controller_delegate.h" | 8 #include "ash/common/accelerators/accelerator_controller_delegate.h" |
| 9 #include "ash/common/accelerators/debug_commands.h" | 9 #include "ash/common/accelerators/debug_commands.h" |
| 10 #include "ash/common/accessibility_delegate.h" | 10 #include "ash/common/accessibility_delegate.h" |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 return ime_control_delegate && | 192 return ime_control_delegate && |
| 193 ime_control_delegate->CanSwitchIme(accelerator); | 193 ime_control_delegate->CanSwitchIme(accelerator); |
| 194 } | 194 } |
| 195 | 195 |
| 196 void HandleSwitchIme(ImeControlDelegate* ime_control_delegate, | 196 void HandleSwitchIme(ImeControlDelegate* ime_control_delegate, |
| 197 const ui::Accelerator& accelerator) { | 197 const ui::Accelerator& accelerator) { |
| 198 base::RecordAction(UserMetricsAction("Accel_Switch_Ime")); | 198 base::RecordAction(UserMetricsAction("Accel_Switch_Ime")); |
| 199 ime_control_delegate->HandleSwitchIme(accelerator); | 199 ime_control_delegate->HandleSwitchIme(accelerator); |
| 200 } | 200 } |
| 201 | 201 |
| 202 bool CanHandleToggleAppList(const ui::Accelerator& accelerator, |
| 203 const ui::Accelerator& previous_accelerator) { |
| 204 if (accelerator.key_code() == ui::VKEY_LWIN) { |
| 205 // If something else was pressed between the Search key (LWIN) |
| 206 // being pressed and released, then ignore the release of the |
| 207 // Search key. |
| 208 if (previous_accelerator.type() != ui::ET_KEY_PRESSED || |
| 209 previous_accelerator.key_code() != ui::VKEY_LWIN) { |
| 210 return false; |
| 211 } |
| 212 |
| 213 // When spoken feedback is enabled, we should neither toggle the list nor |
| 214 // consume the key since Search+Shift is one of the shortcuts the a11y |
| 215 // feature uses. crbug.com/132296 |
| 216 if (WmShell::Get()->accessibility_delegate()->IsSpokenFeedbackEnabled()) |
| 217 return false; |
| 218 } |
| 219 return true; |
| 220 } |
| 221 |
| 222 void HandleToggleAppList(const ui::Accelerator& accelerator) { |
| 223 if (accelerator.key_code() == ui::VKEY_LWIN) |
| 224 base::RecordAction(UserMetricsAction("Accel_Search_LWin")); |
| 225 WmShell::Get()->ToggleAppList(); |
| 226 } |
| 227 |
| 202 void HandleToggleFullscreen(const ui::Accelerator& accelerator) { | 228 void HandleToggleFullscreen(const ui::Accelerator& accelerator) { |
| 203 if (accelerator.key_code() == ui::VKEY_MEDIA_LAUNCH_APP2) | 229 if (accelerator.key_code() == ui::VKEY_MEDIA_LAUNCH_APP2) |
| 204 base::RecordAction(UserMetricsAction("Accel_Fullscreen_F4")); | 230 base::RecordAction(UserMetricsAction("Accel_Fullscreen_F4")); |
| 205 accelerators::ToggleFullscreen(); | 231 accelerators::ToggleFullscreen(); |
| 206 } | 232 } |
| 207 | 233 |
| 208 void HandleToggleOverview() { | 234 void HandleToggleOverview() { |
| 209 base::RecordAction(base::UserMetricsAction("Accel_Overview_F5")); | 235 base::RecordAction(base::UserMetricsAction("Accel_Overview_F5")); |
| 210 WmShell::Get()->window_selector_controller()->ToggleOverview(); | 236 WmShell::Get()->window_selector_controller()->ToggleOverview(); |
| 211 } | 237 } |
| (...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 626 case DEBUG_PRINT_WINDOW_HIERARCHY: | 652 case DEBUG_PRINT_WINDOW_HIERARCHY: |
| 627 return debug::DebugAcceleratorsEnabled(); | 653 return debug::DebugAcceleratorsEnabled(); |
| 628 case NEW_INCOGNITO_WINDOW: | 654 case NEW_INCOGNITO_WINDOW: |
| 629 return CanHandleNewIncognitoWindow(); | 655 return CanHandleNewIncognitoWindow(); |
| 630 case NEXT_IME: | 656 case NEXT_IME: |
| 631 return CanHandleNextIme(ime_control_delegate_.get()); | 657 return CanHandleNextIme(ime_control_delegate_.get()); |
| 632 case PREVIOUS_IME: | 658 case PREVIOUS_IME: |
| 633 return CanHandlePreviousIme(ime_control_delegate_.get()); | 659 return CanHandlePreviousIme(ime_control_delegate_.get()); |
| 634 case SWITCH_IME: | 660 case SWITCH_IME: |
| 635 return CanHandleSwitchIme(ime_control_delegate_.get(), accelerator); | 661 return CanHandleSwitchIme(ime_control_delegate_.get(), accelerator); |
| 662 case TOGGLE_APP_LIST: |
| 663 return CanHandleToggleAppList(accelerator, previous_accelerator); |
| 636 case WINDOW_CYCLE_SNAP_DOCK_LEFT: | 664 case WINDOW_CYCLE_SNAP_DOCK_LEFT: |
| 637 case WINDOW_CYCLE_SNAP_DOCK_RIGHT: | 665 case WINDOW_CYCLE_SNAP_DOCK_RIGHT: |
| 638 return CanHandleWindowSnapOrDock(); | 666 return CanHandleWindowSnapOrDock(); |
| 639 case WINDOW_POSITION_CENTER: | 667 case WINDOW_POSITION_CENTER: |
| 640 return CanHandlePositionCenter(); | 668 return CanHandlePositionCenter(); |
| 641 #if defined(OS_CHROMEOS) | 669 #if defined(OS_CHROMEOS) |
| 642 case DEBUG_SHOW_TOAST: | 670 case DEBUG_SHOW_TOAST: |
| 643 case DEBUG_TOGGLE_TOUCH_PAD: | 671 case DEBUG_TOGGLE_TOUCH_PAD: |
| 644 case DEBUG_TOGGLE_TOUCH_SCREEN: | 672 case DEBUG_TOGGLE_TOUCH_SCREEN: |
| 645 case DEBUG_TOGGLE_TOUCH_VIEW: | 673 case DEBUG_TOGGLE_TOUCH_VIEW: |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 break; | 796 break; |
| 769 case SHOW_KEYBOARD_OVERLAY: | 797 case SHOW_KEYBOARD_OVERLAY: |
| 770 HandleShowKeyboardOverlay(); | 798 HandleShowKeyboardOverlay(); |
| 771 break; | 799 break; |
| 772 case SHOW_TASK_MANAGER: | 800 case SHOW_TASK_MANAGER: |
| 773 HandleShowTaskManager(); | 801 HandleShowTaskManager(); |
| 774 break; | 802 break; |
| 775 case SWITCH_IME: | 803 case SWITCH_IME: |
| 776 HandleSwitchIme(ime_control_delegate_.get(), accelerator); | 804 HandleSwitchIme(ime_control_delegate_.get(), accelerator); |
| 777 break; | 805 break; |
| 806 case TOGGLE_APP_LIST: |
| 807 HandleToggleAppList(accelerator); |
| 808 break; |
| 778 case TOGGLE_FULLSCREEN: | 809 case TOGGLE_FULLSCREEN: |
| 779 HandleToggleFullscreen(accelerator); | 810 HandleToggleFullscreen(accelerator); |
| 780 break; | 811 break; |
| 781 case TOGGLE_MAXIMIZED: | 812 case TOGGLE_MAXIMIZED: |
| 782 accelerators::ToggleMaximized(); | 813 accelerators::ToggleMaximized(); |
| 783 break; | 814 break; |
| 784 case TOGGLE_OVERVIEW: | 815 case TOGGLE_OVERVIEW: |
| 785 HandleToggleOverview(); | 816 HandleToggleOverview(); |
| 786 break; | 817 break; |
| 787 case WINDOW_CYCLE_SNAP_DOCK_LEFT: | 818 case WINDOW_CYCLE_SNAP_DOCK_LEFT: |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 926 if (wm_shell->mru_window_tracker()->BuildMruWindowList().empty() && | 957 if (wm_shell->mru_window_tracker()->BuildMruWindowList().empty() && |
| 927 actions_needing_window_.find(action) != actions_needing_window_.end()) { | 958 actions_needing_window_.find(action) != actions_needing_window_.end()) { |
| 928 wm_shell->accessibility_delegate()->TriggerAccessibilityAlert( | 959 wm_shell->accessibility_delegate()->TriggerAccessibilityAlert( |
| 929 A11Y_ALERT_WINDOW_NEEDED); | 960 A11Y_ALERT_WINDOW_NEEDED); |
| 930 return RESTRICTION_PREVENT_PROCESSING_AND_PROPAGATION; | 961 return RESTRICTION_PREVENT_PROCESSING_AND_PROPAGATION; |
| 931 } | 962 } |
| 932 return RESTRICTION_NONE; | 963 return RESTRICTION_NONE; |
| 933 } | 964 } |
| 934 | 965 |
| 935 } // namespace ash | 966 } // namespace ash |
| OLD | NEW |