summaryrefslogtreecommitdiffstats
path: root/views/widget
diff options
context:
space:
mode:
authorsadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-14 16:21:09 +0000
committersadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-14 16:21:09 +0000
commit50f98aeff2efb612f6336b40b0222c21db601f03 (patch)
treecb16dd4e43fc9b7a1313aad9f92e10aef5fd96c9 /views/widget
parentb5a99f0cdf9edce01dc69624d743230edb5e7208 (diff)
downloadchromium_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.cc9
-rw-r--r--views/widget/root_view.cc2
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;
}
}