diff options
author | rhashimoto@chromium.org <rhashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-28 17:02:12 +0000 |
---|---|---|
committer | rhashimoto@chromium.org <rhashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-28 17:02:12 +0000 |
commit | 96ad4a20f0e424a295df8fb3fa1ff364d96ea192 (patch) | |
tree | 24b348151a636cd932fe5930dd71de5491371a8a /views/examples | |
parent | 8cef17459f51fdd01a1e258cef9bbcbeffe9028e (diff) | |
download | chromium_src-96ad4a20f0e424a295df8fb3fa1ff364d96ea192.zip chromium_src-96ad4a20f0e424a295df8fb3fa1ff364d96ea192.tar.gz chromium_src-96ad4a20f0e424a295df8fb3fa1ff364d96ea192.tar.bz2 |
Fix views_examples NativeWidgetViews parenting on Windows.
The problem this CL addresses is that the parent for a NativeWidgetViews-backed widget must be specified as a Widget and not a View. This produces inconsistent results for views_examples because on Linux each tab is a Widget but on Windows each tab is only a View. The result on Windows is that the NativeWidgetViews test goes on the 0th child of the Widget contents, which is the check box tab.
BUG=chromium:88716
TEST=run views_examples on Windows, NativeWidgetViews should be on proper tab
Review URL: http://codereview.chromium.org/7517015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94484 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/examples')
-rw-r--r-- | views/examples/native_widget_views_example.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/views/examples/native_widget_views_example.cc b/views/examples/native_widget_views_example.cc index 5d43c19..f350df9 100644 --- a/views/examples/native_widget_views_example.cc +++ b/views/examples/native_widget_views_example.cc @@ -7,6 +7,7 @@ #include "ui/gfx/canvas.h" #include "views/controls/button/text_button.h" #include "views/examples/example_base.h" +#include "views/test/test_views_delegate.h" #include "views/view.h" #include "views/widget/widget.h" #include "views/widget/native_widget_views.h" @@ -68,9 +69,28 @@ void NativeWidgetViewsExample::CreateExampleView(views::View* container) { views::Widget* widget = new views::Widget; views::NativeWidgetViews* nwv = new views::NativeWidgetViews(widget); views::Widget::InitParams params(views::Widget::InitParams::TYPE_CONTROL); - params.native_widget = nwv; + + // Set parent View for widget. Real code should use params.parent_widget + // but since tabs are implemented with Views instead of Widgets on Windows + // we have to hack the parenting. +#if defined(OS_WIN) + views::TestViewsDelegate* test_views_delegate = + static_cast<views::TestViewsDelegate*>( + views::ViewsDelegate::views_delegate); + views::View* old_default_parent_view = + test_views_delegate->GetDefaultParentView(); + test_views_delegate->set_default_parent_view(container); +#else params.parent_widget = container->GetWidget(); +#endif + + params.native_widget = nwv; widget->Init(params); + +#if defined(OS_WIN) + test_views_delegate->set_default_parent_view(old_default_parent_view); +#endif + widget->SetContentsView(new TestContentView); widget->SetBounds(gfx::Rect(10, 10, 300, 150)); } |