OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "views/focus/focus_manager.h" | 5 #include "views/focus/focus_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
10 | 10 |
11 #if defined(OS_LINUX) | 11 #if defined(OS_LINUX) |
12 #include <gtk/gtk.h> | 12 #include <gtk/gtk.h> |
13 #endif | 13 #endif |
14 | 14 |
15 #include "base/keyboard_codes.h" | 15 #include "app/keyboard_codes.h" |
16 #include "base/logging.h" | 16 #include "base/logging.h" |
17 #include "views/accelerator.h" | 17 #include "views/accelerator.h" |
18 #include "views/focus/focus_search.h" | 18 #include "views/focus/focus_search.h" |
19 #include "views/focus/view_storage.h" | 19 #include "views/focus/view_storage.h" |
20 #include "views/view.h" | 20 #include "views/view.h" |
21 #include "views/widget/root_view.h" | 21 #include "views/widget/root_view.h" |
22 #include "views/widget/widget.h" | 22 #include "views/widget/widget.h" |
23 | 23 |
24 namespace views { | 24 namespace views { |
25 | 25 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 return false; | 102 return false; |
103 } | 103 } |
104 #else | 104 #else |
105 if (IsTabTraversalKeyEvent(event)) { | 105 if (IsTabTraversalKeyEvent(event)) { |
106 AdvanceFocus(event.IsShiftDown()); | 106 AdvanceFocus(event.IsShiftDown()); |
107 return false; | 107 return false; |
108 } | 108 } |
109 #endif | 109 #endif |
110 | 110 |
111 // Intercept arrow key messages to switch between grouped views. | 111 // Intercept arrow key messages to switch between grouped views. |
112 base::KeyboardCode key_code = event.GetKeyCode(); | 112 app::KeyboardCode key_code = event.GetKeyCode(); |
113 if (focused_view_ && focused_view_->GetGroup() != -1 && | 113 if (focused_view_ && focused_view_->GetGroup() != -1 && |
114 (key_code == base::VKEY_UP || key_code == base::VKEY_DOWN || | 114 (key_code == app::VKEY_UP || key_code == app::VKEY_DOWN || |
115 key_code == base::VKEY_LEFT || key_code == base::VKEY_RIGHT)) { | 115 key_code == app::VKEY_LEFT || key_code == app::VKEY_RIGHT)) { |
116 bool next = (key_code == base::VKEY_RIGHT || key_code == base::VKEY_DOWN); | 116 bool next = (key_code == app::VKEY_RIGHT || key_code == app::VKEY_DOWN); |
117 std::vector<View*> views; | 117 std::vector<View*> views; |
118 focused_view_->GetParent()->GetViewsWithGroup(focused_view_->GetGroup(), | 118 focused_view_->GetParent()->GetViewsWithGroup(focused_view_->GetGroup(), |
119 &views); | 119 &views); |
120 std::vector<View*>::const_iterator iter = std::find(views.begin(), | 120 std::vector<View*>::const_iterator iter = std::find(views.begin(), |
121 views.end(), | 121 views.end(), |
122 focused_view_); | 122 focused_view_); |
123 DCHECK(iter != views.end()); | 123 DCHECK(iter != views.end()); |
124 int index = static_cast<int>(iter - views.begin()); | 124 int index = static_cast<int>(iter - views.begin()); |
125 index += next ? 1 : -1; | 125 index += next ? 1 : -1; |
126 if (index < 0) { | 126 if (index < 0) { |
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 AcceleratorTarget* FocusManager::GetCurrentTargetForAccelerator( | 487 AcceleratorTarget* FocusManager::GetCurrentTargetForAccelerator( |
488 const views::Accelerator& accelerator) const { | 488 const views::Accelerator& accelerator) const { |
489 AcceleratorMap::const_iterator map_iter = accelerators_.find(accelerator); | 489 AcceleratorMap::const_iterator map_iter = accelerators_.find(accelerator); |
490 if (map_iter == accelerators_.end() || map_iter->second.empty()) | 490 if (map_iter == accelerators_.end() || map_iter->second.empty()) |
491 return NULL; | 491 return NULL; |
492 return map_iter->second.front(); | 492 return map_iter->second.front(); |
493 } | 493 } |
494 | 494 |
495 // static | 495 // static |
496 bool FocusManager::IsTabTraversalKeyEvent(const KeyEvent& key_event) { | 496 bool FocusManager::IsTabTraversalKeyEvent(const KeyEvent& key_event) { |
497 return key_event.GetKeyCode() == base::VKEY_TAB && | 497 return key_event.GetKeyCode() == app::VKEY_TAB && |
498 !key_event.IsControlDown(); | 498 !key_event.IsControlDown(); |
499 } | 499 } |
500 | 500 |
501 void FocusManager::ViewRemoved(View* parent, View* removed) { | 501 void FocusManager::ViewRemoved(View* parent, View* removed) { |
502 if (focused_view_ && focused_view_ == removed) | 502 if (focused_view_ && focused_view_ == removed) |
503 ClearFocus(); | 503 ClearFocus(); |
504 } | 504 } |
505 | 505 |
506 void FocusManager::AddFocusChangeListener(FocusChangeListener* listener) { | 506 void FocusManager::AddFocusChangeListener(FocusChangeListener* listener) { |
507 DCHECK(std::find(focus_change_listeners_.begin(), | 507 DCHECK(std::find(focus_change_listeners_.begin(), |
508 focus_change_listeners_.end(), listener) == | 508 focus_change_listeners_.end(), listener) == |
509 focus_change_listeners_.end()) << "Adding a listener twice."; | 509 focus_change_listeners_.end()) << "Adding a listener twice."; |
510 focus_change_listeners_.push_back(listener); | 510 focus_change_listeners_.push_back(listener); |
511 } | 511 } |
512 | 512 |
513 void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) { | 513 void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) { |
514 FocusChangeListenerList::iterator place = | 514 FocusChangeListenerList::iterator place = |
515 std::find(focus_change_listeners_.begin(), focus_change_listeners_.end(), | 515 std::find(focus_change_listeners_.begin(), focus_change_listeners_.end(), |
516 listener); | 516 listener); |
517 if (place == focus_change_listeners_.end()) { | 517 if (place == focus_change_listeners_.end()) { |
518 NOTREACHED() << "Removing a listener that isn't registered."; | 518 NOTREACHED() << "Removing a listener that isn't registered."; |
519 return; | 519 return; |
520 } | 520 } |
521 focus_change_listeners_.erase(place); | 521 focus_change_listeners_.erase(place); |
522 } | 522 } |
523 | 523 |
524 } // namespace views | 524 } // namespace views |
OLD | NEW |