diff options
author | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-20 04:22:44 +0000 |
---|---|---|
committer | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-20 04:22:44 +0000 |
commit | 3c3ba740c63a178807cc0c1a563080e0adbfe143 (patch) | |
tree | 78bcd84e7870d8009165df0e7a9fca87f4e91903 /views/widget/root_view.cc | |
parent | 76724d00d3498f952d945d775a3f33f751624121 (diff) | |
download | chromium_src-3c3ba740c63a178807cc0c1a563080e0adbfe143.zip chromium_src-3c3ba740c63a178807cc0c1a563080e0adbfe143.tar.gz chromium_src-3c3ba740c63a178807cc0c1a563080e0adbfe143.tar.bz2 |
Relanding focus manager refactoring with build fix, see:http://codereview.chromium.org/125148BUG=NoneTEST=NoneTBR=ben
Review URL: http://codereview.chromium.org/141013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18889 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() { |