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 "ui/views/focus/focus_manager.h" | 5 #include "ui/views/focus/focus_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "build/build_config.h" | 11 #include "build/build_config.h" |
12 #include "ui/base/accelerators/accelerator.h" | 12 #include "ui/base/accelerators/accelerator.h" |
13 #include "ui/base/keycodes/keyboard_codes.h" | 13 #include "ui/base/keycodes/keyboard_codes.h" |
14 #include "ui/views/focus/focus_manager_delegate.h" | 14 #include "ui/views/focus/focus_manager_delegate.h" |
15 #include "ui/views/focus/focus_search.h" | 15 #include "ui/views/focus/focus_search.h" |
16 #include "ui/views/focus/view_storage.h" | 16 #include "ui/views/focus/view_storage.h" |
17 #include "ui/views/focus/widget_focus_manager.h" | 17 #include "ui/views/focus/widget_focus_manager.h" |
18 #include "ui/views/view.h" | 18 #include "ui/views/view.h" |
19 #include "ui/views/widget/root_view.h" | 19 #include "ui/views/widget/root_view.h" |
20 #include "ui/views/widget/widget.h" | 20 #include "ui/views/widget/widget.h" |
21 | 21 |
22 namespace views { | 22 namespace views { |
23 | 23 |
| 24 bool FocusManager::shortcut_handling_suspended_ = false; |
| 25 |
24 FocusManager::FocusManager(Widget* widget, FocusManagerDelegate* delegate) | 26 FocusManager::FocusManager(Widget* widget, FocusManagerDelegate* delegate) |
25 : widget_(widget), | 27 : widget_(widget), |
26 delegate_(delegate), | 28 delegate_(delegate), |
27 focused_view_(NULL), | 29 focused_view_(NULL), |
28 accelerator_manager_(new ui::AcceleratorManager), | 30 accelerator_manager_(new ui::AcceleratorManager), |
29 focus_change_reason_(kReasonDirectFocusChange), | 31 focus_change_reason_(kReasonDirectFocusChange), |
30 #if defined(USE_X11) | 32 #if defined(USE_X11) |
31 should_handle_menu_key_release_(false), | 33 should_handle_menu_key_release_(false), |
32 #endif | 34 #endif |
33 is_changing_focus_(false) { | 35 is_changing_focus_(false) { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 ui::Accelerator accelerator(ui::VKEY_MENU, ui::EF_NONE); | 71 ui::Accelerator accelerator(ui::VKEY_MENU, ui::EF_NONE); |
70 return ProcessAccelerator(accelerator); | 72 return ProcessAccelerator(accelerator); |
71 } else if (event.type() != ui::ET_KEY_RELEASED) { | 73 } else if (event.type() != ui::ET_KEY_RELEASED) { |
72 return false; | 74 return false; |
73 } | 75 } |
74 #else | 76 #else |
75 if (event.type() != ui::ET_KEY_PRESSED && event.type() != ui::ET_KEY_RELEASED) | 77 if (event.type() != ui::ET_KEY_PRESSED && event.type() != ui::ET_KEY_RELEASED) |
76 return false; | 78 return false; |
77 #endif | 79 #endif |
78 | 80 |
| 81 if (shortcut_handling_suspended()) |
| 82 return true; |
| 83 |
79 int modifiers = ui::EF_NONE; | 84 int modifiers = ui::EF_NONE; |
80 if (event.IsShiftDown()) | 85 if (event.IsShiftDown()) |
81 modifiers |= ui::EF_SHIFT_DOWN; | 86 modifiers |= ui::EF_SHIFT_DOWN; |
82 if (event.IsControlDown()) | 87 if (event.IsControlDown()) |
83 modifiers |= ui::EF_CONTROL_DOWN; | 88 modifiers |= ui::EF_CONTROL_DOWN; |
84 if (event.IsAltDown()) | 89 if (event.IsAltDown()) |
85 modifiers |= ui::EF_ALT_DOWN; | 90 modifiers |= ui::EF_ALT_DOWN; |
86 ui::Accelerator accelerator(event.key_code(), modifiers); | 91 ui::Accelerator accelerator(event.key_code(), modifiers); |
87 accelerator.set_type(event.type()); | 92 accelerator.set_type(event.type()); |
88 | 93 |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 | 484 |
480 void FocusManager::AddFocusChangeListener(FocusChangeListener* listener) { | 485 void FocusManager::AddFocusChangeListener(FocusChangeListener* listener) { |
481 focus_change_listeners_.AddObserver(listener); | 486 focus_change_listeners_.AddObserver(listener); |
482 } | 487 } |
483 | 488 |
484 void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) { | 489 void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) { |
485 focus_change_listeners_.RemoveObserver(listener); | 490 focus_change_listeners_.RemoveObserver(listener); |
486 } | 491 } |
487 | 492 |
488 } // namespace views | 493 } // namespace views |
OLD | NEW |