| Index: mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
|
| diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc b/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
|
| index a9bb119b762150cb905d4247fef97fbbbe076331..d4dbfe427e4133327e67835b1e848b9aea9a94fe 100644
|
| --- a/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
|
| +++ b/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
|
| @@ -59,10 +59,13 @@ Node* AddNodeToViewManager(ViewManagerClientImpl* client,
|
| }
|
|
|
| Node* BuildNodeTree(ViewManagerClientImpl* client,
|
| - const Array<NodeDataPtr>& nodes) {
|
| + const Array<NodeDataPtr>& nodes,
|
| + Node* initial_parent) {
|
| std::vector<Node*> parents;
|
| Node* root = NULL;
|
| Node* last_node = NULL;
|
| + if (initial_parent)
|
| + parents.push_back(initial_parent);
|
| for (size_t i = 0; i < nodes.size(); ++i) {
|
| if (last_node && nodes[i]->parent_id == last_node->id()) {
|
| parents.push_back(last_node);
|
| @@ -324,11 +327,11 @@ void ViewManagerClientImpl::OnViewManagerConnectionEstablished(
|
| connected_ = true;
|
| connection_id_ = connection_id;
|
| creator_url_ = TypeConverter<String, std::string>::ConvertFrom(creator_url);
|
| - AddRoot(BuildNodeTree(this, nodes));
|
| + AddRoot(BuildNodeTree(this, nodes, NULL));
|
| }
|
|
|
| void ViewManagerClientImpl::OnRootAdded(Array<NodeDataPtr> nodes) {
|
| - AddRoot(BuildNodeTree(this, nodes));
|
| + AddRoot(BuildNodeTree(this, nodes, NULL));
|
| }
|
|
|
| void ViewManagerClientImpl::OnNodeBoundsChanged(Id node_id,
|
| @@ -344,7 +347,10 @@ void ViewManagerClientImpl::OnNodeHierarchyChanged(
|
| Id new_parent_id,
|
| Id old_parent_id,
|
| mojo::Array<NodeDataPtr> nodes) {
|
| - BuildNodeTree(this, nodes);
|
| + Node* initial_parent = nodes.size() ?
|
| + GetNodeById(nodes[0]->parent_id) : NULL;
|
| +
|
| + BuildNodeTree(this, nodes, initial_parent);
|
|
|
| Node* new_parent = GetNodeById(new_parent_id);
|
| Node* old_parent = GetNodeById(old_parent_id);
|
|
|