| 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 |