diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-14 16:21:09 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-14 16:21:09 +0000 |
commit | 50f98aeff2efb612f6336b40b0222c21db601f03 (patch) | |
tree | cb16dd4e43fc9b7a1313aad9f92e10aef5fd96c9 /views/widget | |
parent | b5a99f0cdf9edce01dc69624d743230edb5e7208 (diff) | |
download | chromium_src-50f98aeff2efb612f6336b40b0222c21db601f03.zip chromium_src-50f98aeff2efb612f6336b40b0222c21db601f03.tar.gz chromium_src-50f98aeff2efb612f6336b40b0222c21db601f03.tar.bz2 |
views-desktop: Fix a couple of crashes.
* Setup hosting_widget_ before creating the View, because some of the steps
(e.g. SetBoundsRect) expect that there is a hosting widget.
* Unset capture_view_ when the captured view is destroyed.
BUG=none
TEST=run views-desktop, close a window, and there should be no crash.
Review URL: http://codereview.chromium.org/7358007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92552 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/widget')
-rw-r--r-- | views/widget/native_widget_views.cc | 9 | ||||
-rw-r--r-- | views/widget/root_view.cc | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/views/widget/native_widget_views.cc b/views/widget/native_widget_views.cc index 38c82b5..05fa3cd 100644 --- a/views/widget/native_widget_views.cc +++ b/views/widget/native_widget_views.cc @@ -83,10 +83,6 @@ void NativeWidgetViews::DispatchKeyEventPostIME(const KeyEvent& key) { void NativeWidgetViews::InitNativeWidget(const Widget::InitParams& params) { ownership_ = params.ownership; - view_.reset(new internal::NativeWidgetView(this)); - view_->SetBoundsRect(params.bounds); - view_->SetPaintToLayer(true); - View* parent_view = NULL; if (params.parent_widget) { hosting_widget_ = params.parent_widget; @@ -95,6 +91,11 @@ void NativeWidgetViews::InitNativeWidget(const Widget::InitParams& params) { parent_view = ViewsDelegate::views_delegate->GetDefaultParentView(); hosting_widget_ = parent_view->GetWidget(); } + + view_.reset(new internal::NativeWidgetView(this)); + view_->SetBoundsRect(params.bounds); + view_->SetPaintToLayer(true); + parent_view->AddChildView(view_.get()); // TODO(beng): SetInitParams(). diff --git a/views/widget/root_view.cc b/views/widget/root_view.cc index ce35f8b..83415a9 100644 --- a/views/widget/root_view.cc +++ b/views/widget/root_view.cc @@ -452,6 +452,8 @@ void RootView::ViewHierarchyChanged(bool is_add, View* parent, View* child) { mouse_move_handler_ = NULL; if (touch_pressed_handler_ == child) touch_pressed_handler_ = NULL; + if (capture_view_ == child) + capture_view_ = NULL; } } |