Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(545)

Side by Side Diff: views/view.cc

Issue 7129028: views: STL iterator cleanups in View class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 855 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 Widget* widget = GetWidget(); 866 Widget* widget = GetWidget();
867 return widget ? widget->GetInputMethod() : NULL; 867 return widget ? widget->GetInputMethod() : NULL;
868 } 868 }
869 869
870 // Accelerators ---------------------------------------------------------------- 870 // Accelerators ----------------------------------------------------------------
871 871
872 void View::AddAccelerator(const Accelerator& accelerator) { 872 void View::AddAccelerator(const Accelerator& accelerator) {
873 if (!accelerators_.get()) 873 if (!accelerators_.get())
874 accelerators_.reset(new std::vector<Accelerator>()); 874 accelerators_.reset(new std::vector<Accelerator>());
875 875
876 std::vector<Accelerator>::iterator iter = 876 std::vector<Accelerator>::iterator i(std::find(accelerators_->begin(),
Peter Kasting 2011/06/09 00:43:33 Nit: Linebreak the way the old code did (after the
tfarina 2011/06/09 00:57:00 Done.
877 std::find(accelerators_->begin(), accelerators_->end(), accelerator); 877 accelerators_->end(),
878 DCHECK(iter == accelerators_->end()) 878 accelerator));
879 DCHECK(i == accelerators_->end())
879 << "Registering the same accelerator multiple times"; 880 << "Registering the same accelerator multiple times";
880 881
881 accelerators_->push_back(accelerator); 882 accelerators_->push_back(accelerator);
882 RegisterPendingAccelerators(); 883 RegisterPendingAccelerators();
883 } 884 }
884 885
885 void View::RemoveAccelerator(const Accelerator& accelerator) { 886 void View::RemoveAccelerator(const Accelerator& accelerator) {
886 std::vector<Accelerator>::iterator iter; 887 std::vector<Accelerator>::iterator i(std::find(accelerators_->begin(),
Peter Kasting 2011/06/09 00:43:33 This isn't safe; you moved use of |accelerators_|
tfarina 2011/06/09 00:57:00 Done.
887 if (!accelerators_.get() || 888 accelerators_->end(),
888 ((iter = std::find(accelerators_->begin(), accelerators_->end(), 889 accelerator));
889 accelerator)) == accelerators_->end())) { 890 if (!accelerators_.get() || (i == accelerators_->end())) {
890 NOTREACHED() << "Removing non-existing accelerator"; 891 NOTREACHED() << "Removing non-existing accelerator";
891 return; 892 return;
892 } 893 }
893 894
894 size_t index = iter - accelerators_->begin(); 895 size_t index = i - accelerators_->begin();
895 accelerators_->erase(iter); 896 accelerators_->erase(i);
896 if (index >= registered_accelerator_count_) { 897 if (index >= registered_accelerator_count_) {
897 // The accelerator is not registered to FocusManager. 898 // The accelerator is not registered to FocusManager.
898 return; 899 return;
899 } 900 }
900 --registered_accelerator_count_; 901 --registered_accelerator_count_;
901 902
902 // Providing we are attached to a Widget and registered with a focus manager, 903 // Providing we are attached to a Widget and registered with a focus manager,
903 // we should de-register from that focus manager now. 904 // we should de-register from that focus manager now.
904 if (GetWidget() && accelerator_focus_manager_) 905 if (GetWidget() && accelerator_focus_manager_)
905 accelerator_focus_manager_->UnregisterAccelerator(accelerator, this); 906 accelerator_focus_manager_->UnregisterAccelerator(accelerator, this);
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
1335 start_pt = p; 1336 start_pt = p;
1336 } 1337 }
1337 1338
1338 // Tree operations ------------------------------------------------------------- 1339 // Tree operations -------------------------------------------------------------
1339 1340
1340 void View::DoRemoveChildView(View* view, 1341 void View::DoRemoveChildView(View* view,
1341 bool update_focus_cycle, 1342 bool update_focus_cycle,
1342 bool update_tool_tip, 1343 bool update_tool_tip,
1343 bool delete_removed_view) { 1344 bool delete_removed_view) {
1344 DCHECK(view); 1345 DCHECK(view);
1345 const Views::iterator i = std::find(children_.begin(), children_.end(), view); 1346 const Views::iterator i(std::find(children_.begin(), children_.end(), view));
1346 scoped_ptr<View> view_to_be_deleted; 1347 scoped_ptr<View> view_to_be_deleted;
1347 if (i != children_.end()) { 1348 if (i != children_.end()) {
1348 if (update_focus_cycle) { 1349 if (update_focus_cycle) {
1349 // Let's remove the view from the focus traversal. 1350 // Let's remove the view from the focus traversal.
1350 View* next_focusable = view->next_focusable_view_; 1351 View* next_focusable = view->next_focusable_view_;
1351 View* prev_focusable = view->previous_focusable_view_; 1352 View* prev_focusable = view->previous_focusable_view_;
1352 if (prev_focusable) 1353 if (prev_focusable)
1353 prev_focusable->next_focusable_view_ = next_focusable; 1354 prev_focusable->next_focusable_view_ = next_focusable;
1354 if (next_focusable) 1355 if (next_focusable)
1355 next_focusable->previous_focusable_view_ = prev_focusable; 1356 next_focusable->previous_focusable_view_ = prev_focusable;
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1472 Layout(); 1473 Layout();
1473 } 1474 }
1474 1475
1475 if (NeedsNotificationWhenVisibleBoundsChange()) { 1476 if (NeedsNotificationWhenVisibleBoundsChange()) {
1476 OnVisibleBoundsChanged(); 1477 OnVisibleBoundsChanged();
1477 } 1478 }
1478 1479
1479 // Notify interested Views that visible bounds within the root view may have 1480 // Notify interested Views that visible bounds within the root view may have
1480 // changed. 1481 // changed.
1481 if (descendants_to_notify_.get()) { 1482 if (descendants_to_notify_.get()) {
1482 for (Views::iterator i = descendants_to_notify_->begin(); 1483 for (Views::iterator i(descendants_to_notify_->begin());
1483 i != descendants_to_notify_->end(); ++i) { 1484 i != descendants_to_notify_->end(); ++i) {
1484 (*i)->OnVisibleBoundsChanged(); 1485 (*i)->OnVisibleBoundsChanged();
1485 } 1486 }
1486 } 1487 }
1487 } 1488 }
1488 1489
1489 // static 1490 // static
1490 void View::RegisterChildrenForVisibleBoundsNotification(View* view) { 1491 void View::RegisterChildrenForVisibleBoundsNotification(View* view) {
1491 if (view->NeedsNotificationWhenVisibleBoundsChange()) 1492 if (view->NeedsNotificationWhenVisibleBoundsChange())
1492 view->RegisterForVisibleBoundsNotification(); 1493 view->RegisterForVisibleBoundsNotification();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 1528
1528 void View::AddDescendantToNotify(View* view) { 1529 void View::AddDescendantToNotify(View* view) {
1529 DCHECK(view); 1530 DCHECK(view);
1530 if (!descendants_to_notify_.get()) 1531 if (!descendants_to_notify_.get())
1531 descendants_to_notify_.reset(new Views); 1532 descendants_to_notify_.reset(new Views);
1532 descendants_to_notify_->push_back(view); 1533 descendants_to_notify_->push_back(view);
1533 } 1534 }
1534 1535
1535 void View::RemoveDescendantToNotify(View* view) { 1536 void View::RemoveDescendantToNotify(View* view) {
1536 DCHECK(view && descendants_to_notify_.get()); 1537 DCHECK(view && descendants_to_notify_.get());
1537 Views::iterator i = std::find(descendants_to_notify_->begin(), 1538 Views::iterator i(std::find(descendants_to_notify_->begin(),
1538 descendants_to_notify_->end(), 1539 descendants_to_notify_->end(),
1539 view); 1540 view));
Peter Kasting 2011/06/09 00:43:33 Nit: I'd combine lines 2 and 3
1540 DCHECK(i != descendants_to_notify_->end()); 1541 DCHECK(i != descendants_to_notify_->end());
1541 descendants_to_notify_->erase(i); 1542 descendants_to_notify_->erase(i);
1542 if (descendants_to_notify_->empty()) 1543 if (descendants_to_notify_->empty())
1543 descendants_to_notify_.reset(); 1544 descendants_to_notify_.reset();
1544 } 1545 }
1545 1546
1546 // Transformations ------------------------------------------------------------- 1547 // Transformations -------------------------------------------------------------
1547 1548
1548 bool View::GetTransformRelativeTo(const View* ancestor, 1549 bool View::GetTransformRelativeTo(const View* ancestor,
1549 ui::Transform* transform) const { 1550 ui::Transform* transform) const {
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1721 // NOTREACHED assertion and verify accelerators works as 1722 // NOTREACHED assertion and verify accelerators works as
1722 // expected. 1723 // expected.
1723 #if defined(OS_WIN) 1724 #if defined(OS_WIN)
1724 NOTREACHED(); 1725 NOTREACHED();
1725 #endif 1726 #endif
1726 return; 1727 return;
1727 } 1728 }
1728 // Only register accelerators if we are visible. 1729 // Only register accelerators if we are visible.
1729 if (!IsVisibleInRootView()) 1730 if (!IsVisibleInRootView())
1730 return; 1731 return;
1731 std::vector<Accelerator>::const_iterator iter; 1732 for (std::vector<Accelerator>::const_iterator i(
1732 for (iter = accelerators_->begin() + registered_accelerator_count_; 1733 accelerators_->begin() + registered_accelerator_count_);
1733 iter != accelerators_->end(); ++iter) { 1734 i != accelerators_->end(); ++i) {
1734 accelerator_focus_manager_->RegisterAccelerator(*iter, this); 1735 accelerator_focus_manager_->RegisterAccelerator(*i, this);
1735 } 1736 }
1736 registered_accelerator_count_ = accelerators_->size(); 1737 registered_accelerator_count_ = accelerators_->size();
1737 } 1738 }
1738 1739
1739 void View::UnregisterAccelerators(bool leave_data_intact) { 1740 void View::UnregisterAccelerators(bool leave_data_intact) {
1740 if (!accelerators_.get()) 1741 if (!accelerators_.get())
1741 return; 1742 return;
1742 1743
1743 if (GetWidget()) { 1744 if (GetWidget()) {
1744 if (accelerator_focus_manager_) { 1745 if (accelerator_focus_manager_) {
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1895 result.append(GetChildViewAt(i)->PrintViewGraph(false)); 1896 result.append(GetChildViewAt(i)->PrintViewGraph(false));
1896 1897
1897 if (first) 1898 if (first)
1898 result.append("}\n"); 1899 result.append("}\n");
1899 1900
1900 return result; 1901 return result;
1901 } 1902 }
1902 #endif 1903 #endif
1903 1904
1904 } // namespace views 1905 } // namespace views
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698