| 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/view_manager/node.h" | 5 #include "mojo/services/view_manager/node.h" |
| 6 | 6 |
| 7 #include "mojo/services/view_manager/node_delegate.h" | 7 #include "mojo/services/view_manager/node_delegate.h" |
| 8 #include "mojo/services/view_manager/view.h" | 8 #include "mojo/services/view_manager/view.h" |
| 9 #include "ui/aura/window_property.h" | 9 #include "ui/aura/window_property.h" |
| 10 #include "ui/base/cursor/cursor.h" | 10 #include "ui/base/cursor/cursor.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 window_.set_owned_by_parent(false); | 30 window_.set_owned_by_parent(false); |
| 31 window_.AddObserver(this); | 31 window_.AddObserver(this); |
| 32 window_.SetProperty(kNodeKey, this); | 32 window_.SetProperty(kNodeKey, this); |
| 33 window_.Init(aura::WINDOW_LAYER_TEXTURED); | 33 window_.Init(aura::WINDOW_LAYER_TEXTURED); |
| 34 | 34 |
| 35 // TODO(sky): this likely needs to be false and add a visibility API. | 35 // TODO(sky): this likely needs to be false and add a visibility API. |
| 36 window_.Show(); | 36 window_.Show(); |
| 37 } | 37 } |
| 38 | 38 |
| 39 Node::~Node() { | 39 Node::~Node() { |
| 40 SetView(NULL); | |
| 41 // This is implicitly done during deletion of the window, but we do it here so | 40 // This is implicitly done during deletion of the window, but we do it here so |
| 42 // that we're in a known state. | 41 // that we're in a known state. |
| 43 if (window_.parent()) | 42 if (window_.parent()) |
| 44 window_.parent()->RemoveChild(&window_); | 43 window_.parent()->RemoveChild(&window_); |
| 44 |
| 45 // This must be done *after* updating the hierarchy since the hierarchy change |
| 46 // will remove the node from the connections that know about it, preventing |
| 47 // this notification from being sent after the destruction notification. |
| 48 SetView(NULL); |
| 49 |
| 50 delegate_->OnNodeDestroyed(this); |
| 45 } | 51 } |
| 46 | 52 |
| 47 // static | 53 // static |
| 48 Node* Node::NodeForWindow(aura::Window* window) { | 54 Node* Node::NodeForWindow(aura::Window* window) { |
| 49 return window->GetProperty(kNodeKey); | 55 return window->GetProperty(kNodeKey); |
| 50 } | 56 } |
| 51 | 57 |
| 52 const Node* Node::GetParent() const { | 58 const Node* Node::GetParent() const { |
| 53 if (!window_.parent()) | 59 if (!window_.parent()) |
| 54 return NULL; | 60 return NULL; |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 } | 132 } |
| 127 | 133 |
| 128 void Node::OnWindowHierarchyChanged( | 134 void Node::OnWindowHierarchyChanged( |
| 129 const aura::WindowObserver::HierarchyChangeParams& params) { | 135 const aura::WindowObserver::HierarchyChangeParams& params) { |
| 130 if (params.target != &window_ || params.receiver != &window_) | 136 if (params.target != &window_ || params.receiver != &window_) |
| 131 return; | 137 return; |
| 132 const Node* new_parent = params.new_parent ? | 138 const Node* new_parent = params.new_parent ? |
| 133 params.new_parent->GetProperty(kNodeKey) : NULL; | 139 params.new_parent->GetProperty(kNodeKey) : NULL; |
| 134 const Node* old_parent = params.old_parent ? | 140 const Node* old_parent = params.old_parent ? |
| 135 params.old_parent->GetProperty(kNodeKey) : NULL; | 141 params.old_parent->GetProperty(kNodeKey) : NULL; |
| 136 delegate_->OnNodeHierarchyChanged(this, new_parent, old_parent); | 142 // This check is needed because even the root Node's aura::Window has a |
| 143 // parent, but the Node itself has no parent (so it's possible for us to |
| 144 // receive this notification from aura when no logical Node hierarchy change |
| 145 // has actually ocurred). |
| 146 if (new_parent != old_parent) |
| 147 delegate_->OnNodeHierarchyChanged(this, new_parent, old_parent); |
| 137 } | 148 } |
| 138 | 149 |
| 139 gfx::Size Node::GetMinimumSize() const { | 150 gfx::Size Node::GetMinimumSize() const { |
| 140 return gfx::Size(); | 151 return gfx::Size(); |
| 141 } | 152 } |
| 142 | 153 |
| 143 gfx::Size Node::GetMaximumSize() const { | 154 gfx::Size Node::GetMaximumSize() const { |
| 144 return gfx::Size(); | 155 return gfx::Size(); |
| 145 } | 156 } |
| 146 | 157 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 } | 208 } |
| 198 | 209 |
| 199 void Node::OnEvent(ui::Event* event) { | 210 void Node::OnEvent(ui::Event* event) { |
| 200 if (view_) | 211 if (view_) |
| 201 delegate_->OnViewInputEvent(view_, event); | 212 delegate_->OnViewInputEvent(view_, event); |
| 202 } | 213 } |
| 203 | 214 |
| 204 } // namespace service | 215 } // namespace service |
| 205 } // namespace view_manager | 216 } // namespace view_manager |
| 206 } // namespace mojo | 217 } // namespace mojo |
| OLD | NEW |