| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/view.h" | 5 #include "views/view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 } | 559 } |
| 560 | 560 |
| 561 int View::GetGroup() const { | 561 int View::GetGroup() const { |
| 562 return group_; | 562 return group_; |
| 563 } | 563 } |
| 564 | 564 |
| 565 bool View::IsGroupFocusTraversable() const { | 565 bool View::IsGroupFocusTraversable() const { |
| 566 return true; | 566 return true; |
| 567 } | 567 } |
| 568 | 568 |
| 569 void View::GetViewsWithGroup(int group_id, std::vector<View*>* out) { | 569 void View::GetViewsWithGroup(int group_id, ViewVector* out) { |
| 570 if (group_ == group_id) | 570 if (group_ == group_id) |
| 571 out->push_back(this); | 571 out->push_back(this); |
| 572 | 572 |
| 573 for (int i = 0, count = child_count(); i < count; ++i) | 573 for (int i = 0, count = child_count(); i < count; ++i) |
| 574 GetChildViewAt(i)->GetViewsWithGroup(group_id, out); | 574 GetChildViewAt(i)->GetViewsWithGroup(group_id, out); |
| 575 } | 575 } |
| 576 | 576 |
| 577 View* View::GetSelectedViewForGroup(int group_id) { | 577 View* View::GetSelectedViewForGroup(int group_id) { |
| 578 std::vector<View*> views; | 578 ViewVector views; |
| 579 GetWidget()->GetRootView()->GetViewsWithGroup(group_id, &views); | 579 GetWidget()->GetRootView()->GetViewsWithGroup(group_id, &views); |
| 580 return views.empty() ? NULL : views[0]; | 580 return views.empty() ? NULL : views[0]; |
| 581 } | 581 } |
| 582 | 582 |
| 583 // Coordinate conversion ------------------------------------------------------- | 583 // Coordinate conversion ------------------------------------------------------- |
| 584 | 584 |
| 585 // static | 585 // static |
| 586 void View::ConvertPointToView(const View* src, | 586 void View::ConvertPointToView(const View* src, |
| 587 const View* dst, | 587 const View* dst, |
| 588 gfx::Point* point) { | 588 gfx::Point* point) { |
| (...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1456 Layout(); | 1456 Layout(); |
| 1457 } | 1457 } |
| 1458 | 1458 |
| 1459 if (NeedsNotificationWhenVisibleBoundsChange()) { | 1459 if (NeedsNotificationWhenVisibleBoundsChange()) { |
| 1460 OnVisibleBoundsChanged(); | 1460 OnVisibleBoundsChanged(); |
| 1461 } | 1461 } |
| 1462 | 1462 |
| 1463 // Notify interested Views that visible bounds within the root view may have | 1463 // Notify interested Views that visible bounds within the root view may have |
| 1464 // changed. | 1464 // changed. |
| 1465 if (descendants_to_notify_.get()) { | 1465 if (descendants_to_notify_.get()) { |
| 1466 for (std::vector<View*>::iterator i = descendants_to_notify_->begin(); | 1466 for (ViewVector::iterator i = descendants_to_notify_->begin(); |
| 1467 i != descendants_to_notify_->end(); ++i) { | 1467 i != descendants_to_notify_->end(); ++i) { |
| 1468 (*i)->OnVisibleBoundsChanged(); | 1468 (*i)->OnVisibleBoundsChanged(); |
| 1469 } | 1469 } |
| 1470 } | 1470 } |
| 1471 } | 1471 } |
| 1472 | 1472 |
| 1473 // static | 1473 // static |
| 1474 void View::RegisterChildrenForVisibleBoundsNotification(View* view) { | 1474 void View::RegisterChildrenForVisibleBoundsNotification(View* view) { |
| 1475 if (view->NeedsNotificationWhenVisibleBoundsChange()) | 1475 if (view->NeedsNotificationWhenVisibleBoundsChange()) |
| 1476 view->RegisterForVisibleBoundsNotification(); | 1476 view->RegisterForVisibleBoundsNotification(); |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1737 | 1737 |
| 1738 if (child_count == 0) { | 1738 if (child_count == 0) { |
| 1739 v->next_focusable_view_ = NULL; | 1739 v->next_focusable_view_ = NULL; |
| 1740 v->previous_focusable_view_ = NULL; | 1740 v->previous_focusable_view_ = NULL; |
| 1741 } else { | 1741 } else { |
| 1742 if (index == child_count) { | 1742 if (index == child_count) { |
| 1743 // We are inserting at the end, but the end of the child list may not be | 1743 // We are inserting at the end, but the end of the child list may not be |
| 1744 // the last focusable element. Let's try to find an element with no next | 1744 // the last focusable element. Let's try to find an element with no next |
| 1745 // focusable element to link to. | 1745 // focusable element to link to. |
| 1746 View* last_focusable_view = NULL; | 1746 View* last_focusable_view = NULL; |
| 1747 for (std::vector<View*>::iterator iter = children_.begin(); | 1747 for (ViewVector::iterator iter = children_.begin(); |
| 1748 iter != children_.end(); ++iter) { | 1748 iter != children_.end(); ++iter) { |
| 1749 if (!(*iter)->next_focusable_view_) { | 1749 if (!(*iter)->next_focusable_view_) { |
| 1750 last_focusable_view = *iter; | 1750 last_focusable_view = *iter; |
| 1751 break; | 1751 break; |
| 1752 } | 1752 } |
| 1753 } | 1753 } |
| 1754 if (last_focusable_view == NULL) { | 1754 if (last_focusable_view == NULL) { |
| 1755 // Hum... there is a cycle in the focus list. Let's just insert ourself | 1755 // Hum... there is a cycle in the focus list. Let's just insert ourself |
| 1756 // after the last child. | 1756 // after the last child. |
| 1757 View* prev = children_[index - 1]; | 1757 View* prev = children_[index - 1]; |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1870 result.append(GetChildViewAt(i)->PrintViewGraph(false)); | 1870 result.append(GetChildViewAt(i)->PrintViewGraph(false)); |
| 1871 | 1871 |
| 1872 if (first) | 1872 if (first) |
| 1873 result.append("}\n"); | 1873 result.append("}\n"); |
| 1874 | 1874 |
| 1875 return result; | 1875 return result; |
| 1876 } | 1876 } |
| 1877 #endif | 1877 #endif |
| 1878 | 1878 |
| 1879 } // namespace views | 1879 } // namespace views |
| OLD | NEW |