Index: views/examples/native_widget_views_example.cc |
=================================================================== |
--- views/examples/native_widget_views_example.cc (revision 86488) |
+++ views/examples/native_widget_views_example.cc (working copy) |
@@ -4,6 +4,8 @@ |
#include "views/examples/native_widget_views_example.h" |
+#include "ui/gfx/canvas.h" |
+#include "views/controls/button/text_button.h" |
#include "views/examples/example_base.h" |
#include "views/view.h" |
#include "views/widget/widget.h" |
@@ -11,6 +13,45 @@ |
namespace examples { |
+// A ContentView for our example widget. Contains a variety of controls for |
+// testing NativeWidgetViews event handling. If any part of the Widget's bounds |
+// are rendered red, something went wrong. |
+class TestContentView : public views::View, |
+ public views::ButtonListener { |
+ public: |
+ TestContentView() |
+ : click_count_(0), |
+ button_(new views::TextButton(this, L"Click me!")) { |
sky
2011/05/24 22:32:15
ALLOW_THIS_IN_INITIALIAZER_LIST
|
+ AddChildView(button_); |
+ } |
+ virtual ~TestContentView() { |
+ } |
+ |
+ // Overridden from views::View: |
+ virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { |
+ SkColor color = click_count_ % 2 == 0 ? SK_ColorGREEN : SK_ColorBLUE; |
+ canvas->FillRectInt(color, 0, 0, width(), height()); |
+ } |
+ virtual void Layout() OVERRIDE { |
+ button_->SetBounds(10, 10, width() - 20, height() - 20); |
+ } |
+ |
+ // Overridden from views::ButtonListener: |
+ virtual void ButtonPressed(views::Button* sender, |
+ const views::Event& event) OVERRIDE { |
+ if (sender == button_) { |
+ ++click_count_; |
+ SchedulePaint(); |
+ } |
+ } |
+ |
+ private: |
+ int click_count_; |
+ views::TextButton* button_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TestContentView); |
+}; |
+ |
NativeWidgetViewsExample::NativeWidgetViewsExample(ExamplesMain* main) |
: ExampleBase(main) { |
} |
@@ -24,12 +65,13 @@ |
void NativeWidgetViewsExample::CreateExampleView(views::View* container) { |
views::Widget* widget = new views::Widget; |
- views::NativeWidgetViews* nwv = new views::NativeWidgetViews(widget); |
+ views::NativeWidgetViews* nwv = |
+ new views::NativeWidgetViews(container, widget); |
views::Widget::InitParams params(views::Widget::InitParams::TYPE_CONTROL); |
params.native_widget = nwv; |
widget->Init(params); |
- container->AddChildView(nwv->GetView()); |
- widget->SetBounds(gfx::Rect(10, 10, 50, 50)); |
+ widget->SetContentsView(new TestContentView); |
+ widget->SetBounds(gfx::Rect(10, 10, 300, 150)); |
} |
} // namespace examples |