summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-10 00:31:22 +0000
committerstevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-10 00:31:22 +0000
commit05c8dfc0afe5df8135acaed115f7b86d3ceda2b9 (patch)
tree405e03c82889c94ffb8997a720bacd5937557395
parentb0eb45a0dd246ff17cdd2afdb11f790664c2091f (diff)
downloadchromium_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.cc17
-rw-r--r--views/widget/native_widget_unittest.cc2
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