Chromium Code Reviews| Index: ui/aura/window.cc |
| =================================================================== |
| --- ui/aura/window.cc (revision 119955) |
| +++ ui/aura/window.cc (working copy) |
| @@ -294,8 +294,10 @@ |
| child->OnParentChanged(); |
| RootWindow* root_window = child->GetRootWindow(); |
| - if (root_window) |
| - root_window->OnWindowAttachedToRootWindow(child); |
| + if (root_window) { |
| + root_window->OnWindowAddedToRootWindow(child); |
| + NotifyAddedToRootWindow(); |
| + } |
| } |
| void Window::AddTransientChild(Window* child) { |
| @@ -323,8 +325,10 @@ |
| layout_manager_->OnWillRemoveWindowFromLayout(child); |
| FOR_EACH_OBSERVER(WindowObserver, observers_, OnWillRemoveWindow(child)); |
| RootWindow* root_window = child->GetRootWindow(); |
| - if (root_window) |
| - root_window->OnWindowDetachingFromRootWindow(child); |
| + if (root_window) { |
| + root_window->OnWindowRemovedFromRootWindow(child); |
| + child->NotifyRemovingFromRootWindow(); |
| + } |
| child->parent_ = NULL; |
| // We should only remove the child's layer if the child still owns that layer. |
| // Someone else may have acquired ownership of it via AcquireLayer() and may |
| @@ -519,12 +523,6 @@ |
| return it != children_.end(); |
| } |
| -void Window::OnWindowDetachingFromRootWindow(aura::Window* window) { |
| -} |
| - |
| -void Window::OnWindowAttachedToRootWindow(aura::Window* window) { |
| -} |
| - |
| void Window::SetBoundsInternal(const gfx::Rect& new_bounds) { |
| gfx::Rect actual_new_bounds(new_bounds); |
| @@ -643,6 +641,22 @@ |
| FOR_EACH_OBSERVER(WindowObserver, observers_, OnWindowStackingChanged(this)); |
| } |
| +void Window::NotifyRemovingFromRootWindow() { |
| + FOR_EACH_OBSERVER(WindowObserver, observers_, |
| + OnWindowRemovingFromRootWindow(this)); |
| + Window::Windows::const_iterator it = children_.begin(); |
|
sky
2012/01/31 22:20:58
nit: put iterator inside for loop here and 656.
|
| + for (; it != children_.end(); ++it) |
| + (*it)->NotifyRemovingFromRootWindow(); |
| +} |
| + |
| +void Window::NotifyAddedToRootWindow() { |
| + FOR_EACH_OBSERVER(WindowObserver, observers_, |
| + OnWindowAddedToRootWindow(this)); |
| + Window::Windows::const_iterator it = children_.begin(); |
| + for (; it != children_.end(); ++it) |
| + (*it)->NotifyAddedToRootWindow(); |
| +} |
| + |
| void Window::OnPaintLayer(gfx::Canvas* canvas) { |
| if (delegate_) |
| delegate_->OnPaint(canvas); |