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 "app/keyboard_codes.h" | |
16 #include "base/logging.h" | 15 #include "base/logging.h" |
| 16 #include "ui/base/keycodes/keyboard_codes.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 |
26 // FocusManager::WidgetFocusManager --------------------------------- | 26 // FocusManager::WidgetFocusManager --------------------------------- |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 return false; | 113 return false; |
114 } | 114 } |
115 #else | 115 #else |
116 if (IsTabTraversalKeyEvent(event)) { | 116 if (IsTabTraversalKeyEvent(event)) { |
117 AdvanceFocus(event.IsShiftDown()); | 117 AdvanceFocus(event.IsShiftDown()); |
118 return false; | 118 return false; |
119 } | 119 } |
120 #endif | 120 #endif |
121 | 121 |
122 // Intercept arrow key messages to switch between grouped views. | 122 // Intercept arrow key messages to switch between grouped views. |
123 app::KeyboardCode key_code = event.GetKeyCode(); | 123 ui::KeyboardCode key_code = event.GetKeyCode(); |
124 if (focused_view_ && focused_view_->GetGroup() != -1 && | 124 if (focused_view_ && focused_view_->GetGroup() != -1 && |
125 (key_code == app::VKEY_UP || key_code == app::VKEY_DOWN || | 125 (key_code == ui::VKEY_UP || key_code == ui::VKEY_DOWN || |
126 key_code == app::VKEY_LEFT || key_code == app::VKEY_RIGHT)) { | 126 key_code == ui::VKEY_LEFT || key_code == ui::VKEY_RIGHT)) { |
127 bool next = (key_code == app::VKEY_RIGHT || key_code == app::VKEY_DOWN); | 127 bool next = (key_code == ui::VKEY_RIGHT || key_code == ui::VKEY_DOWN); |
128 std::vector<View*> views; | 128 std::vector<View*> views; |
129 focused_view_->GetParent()->GetViewsWithGroup(focused_view_->GetGroup(), | 129 focused_view_->GetParent()->GetViewsWithGroup(focused_view_->GetGroup(), |
130 &views); | 130 &views); |
131 std::vector<View*>::const_iterator iter = std::find(views.begin(), | 131 std::vector<View*>::const_iterator iter = std::find(views.begin(), |
132 views.end(), | 132 views.end(), |
133 focused_view_); | 133 focused_view_); |
134 DCHECK(iter != views.end()); | 134 DCHECK(iter != views.end()); |
135 int index = static_cast<int>(iter - views.begin()); | 135 int index = static_cast<int>(iter - views.begin()); |
136 index += next ? 1 : -1; | 136 index += next ? 1 : -1; |
137 if (index < 0) { | 137 if (index < 0) { |
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 AcceleratorTarget* FocusManager::GetCurrentTargetForAccelerator( | 502 AcceleratorTarget* FocusManager::GetCurrentTargetForAccelerator( |
503 const views::Accelerator& accelerator) const { | 503 const views::Accelerator& accelerator) const { |
504 AcceleratorMap::const_iterator map_iter = accelerators_.find(accelerator); | 504 AcceleratorMap::const_iterator map_iter = accelerators_.find(accelerator); |
505 if (map_iter == accelerators_.end() || map_iter->second.empty()) | 505 if (map_iter == accelerators_.end() || map_iter->second.empty()) |
506 return NULL; | 506 return NULL; |
507 return map_iter->second.front(); | 507 return map_iter->second.front(); |
508 } | 508 } |
509 | 509 |
510 // static | 510 // static |
511 bool FocusManager::IsTabTraversalKeyEvent(const KeyEvent& key_event) { | 511 bool FocusManager::IsTabTraversalKeyEvent(const KeyEvent& key_event) { |
512 return key_event.GetKeyCode() == app::VKEY_TAB && | 512 return key_event.GetKeyCode() == ui::VKEY_TAB && |
513 !key_event.IsControlDown(); | 513 !key_event.IsControlDown(); |
514 } | 514 } |
515 | 515 |
516 void FocusManager::ViewRemoved(View* parent, View* removed) { | 516 void FocusManager::ViewRemoved(View* parent, View* removed) { |
517 if (focused_view_ && focused_view_ == removed) | 517 if (focused_view_ && focused_view_ == removed) |
518 ClearFocus(); | 518 ClearFocus(); |
519 } | 519 } |
520 | 520 |
521 void FocusManager::AddFocusChangeListener(FocusChangeListener* listener) { | 521 void FocusManager::AddFocusChangeListener(FocusChangeListener* listener) { |
522 DCHECK(std::find(focus_change_listeners_.begin(), | 522 DCHECK(std::find(focus_change_listeners_.begin(), |
523 focus_change_listeners_.end(), listener) == | 523 focus_change_listeners_.end(), listener) == |
524 focus_change_listeners_.end()) << "Adding a listener twice."; | 524 focus_change_listeners_.end()) << "Adding a listener twice."; |
525 focus_change_listeners_.push_back(listener); | 525 focus_change_listeners_.push_back(listener); |
526 } | 526 } |
527 | 527 |
528 void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) { | 528 void FocusManager::RemoveFocusChangeListener(FocusChangeListener* listener) { |
529 FocusChangeListenerList::iterator place = | 529 FocusChangeListenerList::iterator place = |
530 std::find(focus_change_listeners_.begin(), focus_change_listeners_.end(), | 530 std::find(focus_change_listeners_.begin(), focus_change_listeners_.end(), |
531 listener); | 531 listener); |
532 if (place == focus_change_listeners_.end()) { | 532 if (place == focus_change_listeners_.end()) { |
533 NOTREACHED() << "Removing a listener that isn't registered."; | 533 NOTREACHED() << "Removing a listener that isn't registered."; |
534 return; | 534 return; |
535 } | 535 } |
536 focus_change_listeners_.erase(place); | 536 focus_change_listeners_.erase(place); |
537 } | 537 } |
538 | 538 |
539 } // namespace views | 539 } // namespace views |
OLD | NEW |