| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "mojo/services/public/cpp/view_manager/view_tree_node.h" | 5 #include "mojo/services/public/cpp/view_manager/view_tree_node.h" |
| 6 | 6 |
| 7 #include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h" | 7 #include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h" |
| 8 #include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h" | 8 #include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h" |
| 9 #include "mojo/services/public/cpp/view_manager/lib/view_private.h" | 9 #include "mojo/services/public/cpp/view_manager/lib/view_private.h" |
| 10 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" | 10 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 const ViewTreeNodeObserver::TreeChangeParams& params) { | 38 const ViewTreeNodeObserver::TreeChangeParams& params) { |
| 39 NotifyViewTreeChangeAtReceiver(start_at, params); | 39 NotifyViewTreeChangeAtReceiver(start_at, params); |
| 40 ViewTreeNode::Children::const_iterator it = start_at->children().begin(); | 40 ViewTreeNode::Children::const_iterator it = start_at->children().begin(); |
| 41 for (; it != start_at->children().end(); ++it) | 41 for (; it != start_at->children().end(); ++it) |
| 42 NotifyViewTreeChangeDown(*it, params); | 42 NotifyViewTreeChangeDown(*it, params); |
| 43 } | 43 } |
| 44 | 44 |
| 45 void NotifyViewTreeChange( | 45 void NotifyViewTreeChange( |
| 46 const ViewTreeNodeObserver::TreeChangeParams& params) { | 46 const ViewTreeNodeObserver::TreeChangeParams& params) { |
| 47 NotifyViewTreeChangeDown(params.target, params); | 47 NotifyViewTreeChangeDown(params.target, params); |
| 48 switch (params.phase) { | 48 if (params.old_parent) |
| 49 case ViewTreeNodeObserver::DISPOSITION_CHANGING: | 49 NotifyViewTreeChangeUp(params.old_parent, params); |
| 50 if (params.old_parent) | 50 if (params.new_parent) |
| 51 NotifyViewTreeChangeUp(params.old_parent, params); | 51 NotifyViewTreeChangeUp(params.new_parent, params); |
| 52 break; | |
| 53 case ViewTreeNodeObserver::DISPOSITION_CHANGED: | |
| 54 if (params.new_parent) | |
| 55 NotifyViewTreeChangeUp(params.new_parent, params); | |
| 56 break; | |
| 57 default: | |
| 58 NOTREACHED(); | |
| 59 break; | |
| 60 } | |
| 61 } | 52 } |
| 62 | 53 |
| 63 class ScopedTreeNotifier { | 54 class ScopedTreeNotifier { |
| 64 public: | 55 public: |
| 65 ScopedTreeNotifier(ViewTreeNode* target, | 56 ScopedTreeNotifier(ViewTreeNode* target, |
| 66 ViewTreeNode* old_parent, | 57 ViewTreeNode* old_parent, |
| 67 ViewTreeNode* new_parent) { | 58 ViewTreeNode* new_parent) { |
| 68 params_.target = target; | 59 params_.target = target; |
| 69 params_.old_parent = old_parent; | 60 params_.old_parent = old_parent; |
| 70 params_.new_parent = new_parent; | 61 params_.new_parent = new_parent; |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 void ViewTreeNode::LocalAddChild(ViewTreeNode* child) { | 305 void ViewTreeNode::LocalAddChild(ViewTreeNode* child) { |
| 315 ScopedTreeNotifier notifier(child, child->parent(), this); | 306 ScopedTreeNotifier notifier(child, child->parent(), this); |
| 316 if (child->parent()) | 307 if (child->parent()) |
| 317 RemoveChildImpl(child, &child->parent_->children_); | 308 RemoveChildImpl(child, &child->parent_->children_); |
| 318 children_.push_back(child); | 309 children_.push_back(child); |
| 319 child->parent_ = this; | 310 child->parent_ = this; |
| 320 } | 311 } |
| 321 | 312 |
| 322 void ViewTreeNode::LocalRemoveChild(ViewTreeNode* child) { | 313 void ViewTreeNode::LocalRemoveChild(ViewTreeNode* child) { |
| 323 DCHECK_EQ(this, child->parent()); | 314 DCHECK_EQ(this, child->parent()); |
| 324 ScopedTreeNotifier(child, this, NULL); | 315 ScopedTreeNotifier notifier(child, this, NULL); |
| 325 RemoveChildImpl(child, &children_); | 316 RemoveChildImpl(child, &children_); |
| 326 } | 317 } |
| 327 | 318 |
| 328 void ViewTreeNode::LocalSetActiveView(View* view) { | 319 void ViewTreeNode::LocalSetActiveView(View* view) { |
| 329 ScopedSetActiveViewNotifier notifier(this, active_view_, view); | 320 ScopedSetActiveViewNotifier notifier(this, active_view_, view); |
| 330 if (active_view_) | 321 if (active_view_) |
| 331 ViewPrivate(active_view_).set_node(NULL); | 322 ViewPrivate(active_view_).set_node(NULL); |
| 332 active_view_ = view; | 323 active_view_ = view; |
| 333 if (active_view_) | 324 if (active_view_) |
| 334 ViewPrivate(active_view_).set_node(this); | 325 ViewPrivate(active_view_).set_node(this); |
| 335 } | 326 } |
| 336 | 327 |
| 337 void ViewTreeNode::LocalSetBounds(const gfx::Rect& old_bounds, | 328 void ViewTreeNode::LocalSetBounds(const gfx::Rect& old_bounds, |
| 338 const gfx::Rect& new_bounds) { | 329 const gfx::Rect& new_bounds) { |
| 339 DCHECK(old_bounds == bounds_); | 330 DCHECK(old_bounds == bounds_); |
| 340 ScopedSetBoundsNotifier notifier(this, old_bounds, new_bounds); | 331 ScopedSetBoundsNotifier notifier(this, old_bounds, new_bounds); |
| 341 bounds_ = new_bounds; | 332 bounds_ = new_bounds; |
| 342 } | 333 } |
| 343 | 334 |
| 344 } // namespace view_manager | 335 } // namespace view_manager |
| 345 } // namespace mojo | 336 } // namespace mojo |
| 346 | 337 |
| OLD | NEW |