summaryrefslogtreecommitdiffstats
path: root/views/widget/root_view.cc
diff options
context:
space:
mode:
authorjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-19 22:57:54 +0000
committerjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-19 22:57:54 +0000
commita109d02492863aeb537dea09bfb445eb6f5d94c5 (patch)
treebd3d2e9a783179eb2582f0055192b97e8d248547 /views/widget/root_view.cc
parent3c30f4c1e5f2bdb4f5d198c4a9ea18cc8045ddea (diff)
downloadchromium_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.cc21
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() {