diff options
author | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-19 22:57:54 +0000 |
---|---|---|
committer | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-19 22:57:54 +0000 |
commit | a109d02492863aeb537dea09bfb445eb6f5d94c5 (patch) | |
tree | bd3d2e9a783179eb2582f0055192b97e8d248547 /views/widget/root_view.cc | |
parent | 3c30f4c1e5f2bdb4f5d198c4a9ea18cc8045ddea (diff) | |
download | chromium_src-a109d02492863aeb537dea09bfb445eb6f5d94c5.zip chromium_src-a109d02492863aeb537dea09bfb445eb6f5d94c5.tar.gz chromium_src-a109d02492863aeb537dea09bfb445eb6f5d94c5.tar.bz2 |
Removed the last Windows specific part out of the focus manager. HWNDs are not subclassed anymore.The FocusManager is now created and owned by top-level WidgetWins.BUG=NoneTEST=Run the unit tests, UI tests, interactive UI tests. Fully test the focus behavior in the browser: activate/deactivate the browser windows, make sure focus is remembered. Switch tabs, make sure focus is remembered for each tab. make sure accelerators work as expected. Test focus traversal in a web page, in the option dialog.
Review URL: http://codereview.chromium.org/125148
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18872 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/widget/root_view.cc')
-rw-r--r-- | views/widget/root_view.cc | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/views/widget/root_view.cc b/views/widget/root_view.cc index 367c720..751786a 100644 --- a/views/widget/root_view.cc +++ b/views/widget/root_view.cc @@ -46,7 +46,7 @@ class PaintTask : public Task { // The target root view. RootView* root_view_; - DISALLOW_EVIL_CONSTRUCTORS(PaintTask); + DISALLOW_COPY_AND_ASSIGN(PaintTask); }; const char RootView::kViewClassName[] = "views/RootView"; @@ -262,23 +262,11 @@ void RootView::ViewHierarchyChanged(bool is_add, View* parent, View* child) { default_keyboard_handler_ = NULL; } - // For a given widget hierarchy, focus is tracked by a FocusManager attached - // to our nearest enclosing Window. <-- Important Assumption! - // We may not have access to our window if this function is called as a - // result of teardown during the deletion of the RootView and its hierarchy, - // so we don't bother notifying the FocusManager in that case because it - // will have already been destroyed (the Widget that contains us is - // NCDESTROY'ed which in turn destroys the focus manager _before_ the - // RootView is deleted.) -#if defined(OS_WIN) - Window* window = GetWindow(); - if (window) { - FocusManager* focus_manager = - FocusManager::GetFocusManager(window->GetNativeWindow()); + FocusManager* focus_manager = widget_->GetFocusManager(); + // An unparanted RootView does not have a FocusManager. + if (focus_manager) focus_manager->ViewRemoved(parent, child); - } ViewStorage::GetSharedInstance()->ViewRemoved(parent, child); -#endif } } @@ -521,7 +509,6 @@ void RootView::OnWidgetDestroyed() { // TODO(port): Port RootViewDropTarget and this goes away. NOTIMPLEMENTED(); #endif - widget_ = NULL; } void RootView::ProcessMouseDragCanceled() { |