Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(315)

Side by Side Diff: ui/aura/window.cc

Issue 11348314: FocusController needs to restack windows upon activation (but not focus). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | ui/views/corewm/focus_controller.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/aura/window.h" 5 #include "ui/aura/window.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 return_tightest, 772 return_tightest,
773 for_event_handling); 773 for_event_handling);
774 if (match) 774 if (match)
775 return match; 775 return match;
776 } 776 }
777 777
778 return delegate_ ? this : NULL; 778 return delegate_ ? this : NULL;
779 } 779 }
780 780
781 void Window::RemoveChildImpl(Window* child, Window* new_parent) { 781 void Window::RemoveChildImpl(Window* child, Window* new_parent) {
782 Windows::iterator i = std::find(children_.begin(), children_.end(), child);
783 DCHECK(i != children_.end());
784 if (layout_manager_.get()) 782 if (layout_manager_.get())
785 layout_manager_->OnWillRemoveWindowFromLayout(child); 783 layout_manager_->OnWillRemoveWindowFromLayout(child);
786 FOR_EACH_OBSERVER(WindowObserver, observers_, OnWillRemoveWindow(child)); 784 FOR_EACH_OBSERVER(WindowObserver, observers_, OnWillRemoveWindow(child));
787 RootWindow* root_window = child->GetRootWindow(); 785 RootWindow* root_window = child->GetRootWindow();
788 RootWindow* new_root_window = new_parent ? new_parent->GetRootWindow() : NULL; 786 RootWindow* new_root_window = new_parent ? new_parent->GetRootWindow() : NULL;
789 if (root_window && root_window != new_root_window) { 787 if (root_window && root_window != new_root_window) {
790 root_window->OnWindowRemovedFromRootWindow(child, new_root_window); 788 root_window->OnWindowRemovedFromRootWindow(child, new_root_window);
791 child->NotifyRemovingFromRootWindow(); 789 child->NotifyRemovingFromRootWindow();
792 } 790 }
793 child->parent_ = NULL; 791 child->parent_ = NULL;
794 // We should only remove the child's layer if the child still owns that layer. 792 // We should only remove the child's layer if the child still owns that layer.
795 // Someone else may have acquired ownership of it via AcquireLayer() and may 793 // Someone else may have acquired ownership of it via AcquireLayer() and may
796 // expect the hierarchy to go unchanged as the Window is destroyed. 794 // expect the hierarchy to go unchanged as the Window is destroyed.
797 if (child->layer_owner_.get()) 795 if (child->layer_owner_.get())
798 layer_->Remove(child->layer_); 796 layer_->Remove(child->layer_);
797 Windows::iterator i = std::find(children_.begin(), children_.end(), child);
798 DCHECK(i != children_.end());
799 children_.erase(i); 799 children_.erase(i);
800 child->OnParentChanged(); 800 child->OnParentChanged();
801 if (layout_manager_.get()) 801 if (layout_manager_.get())
802 layout_manager_->OnWindowRemovedFromLayout(child); 802 layout_manager_->OnWindowRemovedFromLayout(child);
803 } 803 }
804 804
805 void Window::OnParentChanged() { 805 void Window::OnParentChanged() {
806 FOR_EACH_OBSERVER( 806 FOR_EACH_OBSERVER(
807 WindowObserver, observers_, OnWindowParentChanged(this, parent_)); 807 WindowObserver, observers_, OnWindowParentChanged(this, parent_));
808 } 808 }
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 bool contains_mouse = false; 962 bool contains_mouse = false;
963 if (IsVisible()) { 963 if (IsVisible()) {
964 RootWindow* root_window = GetRootWindow(); 964 RootWindow* root_window = GetRootWindow();
965 contains_mouse = root_window && 965 contains_mouse = root_window &&
966 ContainsPointInRoot(root_window->GetLastMouseLocationInRoot()); 966 ContainsPointInRoot(root_window->GetLastMouseLocationInRoot());
967 } 967 }
968 return contains_mouse; 968 return contains_mouse;
969 } 969 }
970 970
971 } // namespace aura 971 } // namespace aura
OLDNEW
« no previous file with comments | « no previous file | ui/views/corewm/focus_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698