| 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/server_view.h" | 5 #include "mojo/services/view_manager/server_view.h" |
| 6 | 6 |
| 7 #include "mojo/services/view_manager/server_view_delegate.h" | 7 #include "mojo/services/view_manager/server_view_delegate.h" |
| 8 | 8 |
| 9 namespace mojo { | 9 namespace mojo { |
| 10 namespace service { | 10 namespace service { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 DCHECK(child != this); | 30 DCHECK(child != this); |
| 31 DCHECK(!child->Contains(this)); | 31 DCHECK(!child->Contains(this)); |
| 32 if (child->parent() == this) { | 32 if (child->parent() == this) { |
| 33 if (children_.size() == 1) | 33 if (children_.size() == 1) |
| 34 return; // Already in the right position. | 34 return; // Already in the right position. |
| 35 Reorder(child, children_.back(), ORDER_DIRECTION_ABOVE); | 35 Reorder(child, children_.back(), ORDER_DIRECTION_ABOVE); |
| 36 return; | 36 return; |
| 37 } | 37 } |
| 38 | 38 |
| 39 const ServerView* old_parent = child->parent(); | 39 const ServerView* old_parent = child->parent(); |
| 40 child->delegate_->OnWillChangeViewHierarchy(child, this, old_parent); |
| 40 if (child->parent()) | 41 if (child->parent()) |
| 41 child->parent()->RemoveImpl(child); | 42 child->parent()->RemoveImpl(child); |
| 42 | 43 |
| 43 child->parent_ = this; | 44 child->parent_ = this; |
| 44 children_.push_back(child); | 45 children_.push_back(child); |
| 45 child->delegate_->OnViewHierarchyChanged(child, this, old_parent); | 46 child->delegate_->OnViewHierarchyChanged(child, this, old_parent); |
| 46 } | 47 } |
| 47 | 48 |
| 48 void ServerView::Remove(ServerView* child) { | 49 void ServerView::Remove(ServerView* child) { |
| 49 // We assume validation checks happened else where. | 50 // We assume validation checks happened else where. |
| 50 DCHECK(child); | 51 DCHECK(child); |
| 51 DCHECK(child != this); | 52 DCHECK(child != this); |
| 52 DCHECK(child->parent() == this); | 53 DCHECK(child->parent() == this); |
| 53 | 54 |
| 55 child->delegate_->OnWillChangeViewHierarchy(child, NULL, this); |
| 54 RemoveImpl(child); | 56 RemoveImpl(child); |
| 55 child->delegate_->OnViewHierarchyChanged(child, NULL, this); | 57 child->delegate_->OnViewHierarchyChanged(child, NULL, this); |
| 56 } | 58 } |
| 57 | 59 |
| 58 void ServerView::Reorder(ServerView* child, | 60 void ServerView::Reorder(ServerView* child, |
| 59 ServerView* relative, | 61 ServerView* relative, |
| 60 OrderDirection direction) { | 62 OrderDirection direction) { |
| 61 // We assume validation checks happened else where. | 63 // We assume validation checks happened else where. |
| 62 DCHECK(child); | 64 DCHECK(child); |
| 63 DCHECK(child->parent() == this); | 65 DCHECK(child->parent() == this); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 if (parent == this) | 109 if (parent == this) |
| 108 return true; | 110 return true; |
| 109 } | 111 } |
| 110 return false; | 112 return false; |
| 111 } | 113 } |
| 112 | 114 |
| 113 void ServerView::SetVisible(bool value) { | 115 void ServerView::SetVisible(bool value) { |
| 114 if (visible_ == value) | 116 if (visible_ == value) |
| 115 return; | 117 return; |
| 116 | 118 |
| 119 delegate_->OnWillChangeViewVisibility(this); |
| 117 visible_ = value; | 120 visible_ = value; |
| 118 // TODO(sky): notification, including repaint. | 121 } |
| 122 |
| 123 bool ServerView::IsDrawn(const ServerView* root) const { |
| 124 if (!root->visible_) |
| 125 return false; |
| 126 const ServerView* view = this; |
| 127 while (view && view != root && view->visible_) |
| 128 view = view->parent_; |
| 129 return view == root; |
| 119 } | 130 } |
| 120 | 131 |
| 121 void ServerView::SetBitmap(const SkBitmap& bitmap) { | 132 void ServerView::SetBitmap(const SkBitmap& bitmap) { |
| 122 bitmap_ = bitmap; | 133 bitmap_ = bitmap; |
| 123 delegate_->OnViewBitmapChanged(this); | 134 delegate_->OnViewBitmapChanged(this); |
| 124 } | 135 } |
| 125 | 136 |
| 126 void ServerView::RemoveImpl(ServerView* view) { | 137 void ServerView::RemoveImpl(ServerView* view) { |
| 127 view->parent_ = NULL; | 138 view->parent_ = NULL; |
| 128 children_.erase(std::find(children_.begin(), children_.end(), view)); | 139 children_.erase(std::find(children_.begin(), children_.end(), view)); |
| 129 } | 140 } |
| 130 | 141 |
| 131 } // namespace service | 142 } // namespace service |
| 132 } // namespace mojo | 143 } // namespace mojo |
| OLD | NEW |