diff options
author | stevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-10 00:31:22 +0000 |
---|---|---|
committer | stevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-10 00:31:22 +0000 |
commit | 05c8dfc0afe5df8135acaed115f7b86d3ceda2b9 (patch) | |
tree | 405e03c82889c94ffb8997a720bacd5937557395 | |
parent | b0eb45a0dd246ff17cdd2afdb11f790664c2091f (diff) | |
download | chromium_src-05c8dfc0afe5df8135acaed115f7b86d3ceda2b9.zip chromium_src-05c8dfc0afe5df8135acaed115f7b86d3ceda2b9.tar.gz chromium_src-05c8dfc0afe5df8135acaed115f7b86d3ceda2b9.tar.bz2 |
Return the topmost native widget for NativeWidgetAura::GetTopLevelNativeWidget
BUG=103637
TEST=Only affects Aura builds. Test status area menus (when added), notifications, tooltips, and general UI windows / features.
Review URL: http://codereview.chromium.org/8508030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109342 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | views/widget/native_widget_aura.cc | 17 | ||||
-rw-r--r-- | views/widget/native_widget_unittest.cc | 2 |
2 files changed, 9 insertions, 10 deletions
diff --git a/views/widget/native_widget_aura.cc b/views/widget/native_widget_aura.cc index 527e257..98e6126 100644 --- a/views/widget/native_widget_aura.cc +++ b/views/widget/native_widget_aura.cc @@ -683,15 +683,16 @@ NativeWidgetPrivate* NativeWidgetPrivate::GetTopLevelNativeWidget( gfx::NativeView native_view) { if (!native_view) return NULL; - aura::Window* toplevel = native_view; - aura::Window* parent = native_view->parent(); - while (parent) { - if (parent->AsToplevelWindowContainer()) - return GetNativeWidgetForNativeView(toplevel); - toplevel = parent; - parent = parent->parent(); + + aura::Window* window = native_view; + NativeWidgetPrivate* top_level_native_widget = NULL; + while (window) { + NativeWidgetPrivate* native_widget = GetNativeWidgetForNativeView(window); + if (native_widget) + top_level_native_widget = native_widget; + window = window->parent(); } - return NULL; + return top_level_native_widget; } // static diff --git a/views/widget/native_widget_unittest.cc b/views/widget/native_widget_unittest.cc index c880a3c..9c7218d 100644 --- a/views/widget/native_widget_unittest.cc +++ b/views/widget/native_widget_unittest.cc @@ -62,7 +62,6 @@ TEST_F(NativeWidgetTest, GetTopLevelNativeWidget1) { widget->GetWidget()->GetNativeView())); } -#if !defined(USE_AURA) // |toplevel_widget| has the toplevel NativeWidget. TEST_F(NativeWidgetTest, GetTopLevelNativeWidget2) { ScopedTestWidget toplevel_widget(internal::CreateNativeWidget()); @@ -80,6 +79,5 @@ TEST_F(NativeWidgetTest, GetTopLevelNativeWidget2) { internal::NativeWidgetPrivate::GetTopLevelNativeWidget( child_widget->GetWidget()->GetNativeView())); } -#endif } // namespace views |