summaryrefslogtreecommitdiffstats
path: root/views/examples
diff options
context:
space:
mode:
authorrhashimoto@chromium.org <rhashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-28 17:02:12 +0000
committerrhashimoto@chromium.org <rhashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-28 17:02:12 +0000
commit96ad4a20f0e424a295df8fb3fa1ff364d96ea192 (patch)
tree24b348151a636cd932fe5930dd71de5491371a8a /views/examples
parent8cef17459f51fdd01a1e258cef9bbcbeffe9028e (diff)
downloadchromium_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.cc22
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));
}