| 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 "base/logging.h" | 5 #include "base/logging.h" |
| 6 #include "views/focus/focus_manager.h" | 6 #include "views/focus/focus_manager.h" |
| 7 #include "views/focus/focus_search.h" | 7 #include "views/focus/focus_search.h" |
| 8 #include "views/view.h" | 8 #include "views/view.h" |
| 9 | 9 |
| 10 namespace views { | 10 namespace views { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 | 26 |
| 27 if (!root_->has_children()) { | 27 if (!root_->has_children()) { |
| 28 NOTREACHED(); | 28 NOTREACHED(); |
| 29 // Nothing to focus on here. | 29 // Nothing to focus on here. |
| 30 return NULL; | 30 return NULL; |
| 31 } | 31 } |
| 32 | 32 |
| 33 View* initial_starting_view = starting_view; | 33 View* initial_starting_view = starting_view; |
| 34 int starting_view_group = -1; | 34 int starting_view_group = -1; |
| 35 if (starting_view) | 35 if (starting_view) |
| 36 starting_view_group = starting_view->GetGroup(); | 36 starting_view_group = starting_view->group(); |
| 37 | 37 |
| 38 if (!starting_view) { | 38 if (!starting_view) { |
| 39 // Default to the first/last child | 39 // Default to the first/last child |
| 40 starting_view = | 40 starting_view = |
| 41 reverse ? | 41 reverse ? |
| 42 root_->GetChildViewAt(root_->child_count() - 1) : | 42 root_->GetChildViewAt(root_->child_count() - 1) : |
| 43 root_->GetChildViewAt(0); | 43 root_->GetChildViewAt(0); |
| 44 // If there was no starting view, then the one we select is a potential | 44 // If there was no starting view, then the one we select is a potential |
| 45 // focus candidate. | 45 // focus candidate. |
| 46 check_starting_view = true; | 46 check_starting_view = true; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 DCHECK(*focus_traversable_view); | 90 DCHECK(*focus_traversable_view); |
| 91 return NULL; | 91 return NULL; |
| 92 } | 92 } |
| 93 // Nothing found. | 93 // Nothing found. |
| 94 return NULL; | 94 return NULL; |
| 95 } | 95 } |
| 96 | 96 |
| 97 bool FocusSearch::IsViewFocusableCandidate(View* v, int skip_group_id) { | 97 bool FocusSearch::IsViewFocusableCandidate(View* v, int skip_group_id) { |
| 98 return IsFocusable(v) && | 98 return IsFocusable(v) && |
| 99 (v->IsGroupFocusTraversable() || skip_group_id == -1 || | 99 (v->IsGroupFocusTraversable() || skip_group_id == -1 || |
| 100 v->GetGroup() != skip_group_id); | 100 v->group() != skip_group_id); |
| 101 } | 101 } |
| 102 | 102 |
| 103 bool FocusSearch::IsFocusable(View* v) { | 103 bool FocusSearch::IsFocusable(View* v) { |
| 104 if (accessibility_mode_) | 104 if (accessibility_mode_) |
| 105 return v && v->IsAccessibilityFocusableInRootView(); | 105 return v && v->IsAccessibilityFocusableInRootView(); |
| 106 | 106 |
| 107 return v && v->IsFocusableInRootView(); | 107 return v && v->IsFocusableInRootView(); |
| 108 } | 108 } |
| 109 | 109 |
| 110 View* FocusSearch::FindSelectedViewForGroup(View* view) { | 110 View* FocusSearch::FindSelectedViewForGroup(View* view) { |
| 111 if (view->IsGroupFocusTraversable() || | 111 if (view->IsGroupFocusTraversable() || |
| 112 view->GetGroup() == -1) // No group for that view. | 112 view->group() == -1) // No group for that view. |
| 113 return view; | 113 return view; |
| 114 | 114 |
| 115 View* selected_view = view->GetSelectedViewForGroup(view->GetGroup()); | 115 View* selected_view = view->GetSelectedViewForGroup(view->group()); |
| 116 if (selected_view) | 116 if (selected_view) |
| 117 return selected_view; | 117 return selected_view; |
| 118 | 118 |
| 119 // No view selected for that group, default to the specified view. | 119 // No view selected for that group, default to the specified view. |
| 120 return view; | 120 return view; |
| 121 } | 121 } |
| 122 | 122 |
| 123 View* FocusSearch::GetParent(View* v) { | 123 View* FocusSearch::GetParent(View* v) { |
| 124 return root_->Contains(v) ? v->parent() : NULL; | 124 return root_->Contains(v) ? v->parent() : NULL; |
| 125 } | 125 } |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 skip_group_id, | 265 skip_group_id, |
| 266 focus_traversable, | 266 focus_traversable, |
| 267 focus_traversable_view); | 267 focus_traversable_view); |
| 268 } | 268 } |
| 269 | 269 |
| 270 // We found nothing. | 270 // We found nothing. |
| 271 return NULL; | 271 return NULL; |
| 272 } | 272 } |
| 273 | 273 |
| 274 } // namespace views | 274 } // namespace views |
| OLD | NEW |