summaryrefslogtreecommitdiffstats
path: root/views/widget/native_widget_views.h
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-12 22:05:59 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-12 22:05:59 +0000
commitb5c5ed04cde665ba0041dd31ad99a2d03607c403 (patch)
tree3d73c578d9c8ab06a6e7e1fb2a6a1cc327899eb9 /views/widget/native_widget_views.h
parent2e2cacc40972c220dc077d51a1181cb16dd1d04a (diff)
downloadchromium_src-b5c5ed04cde665ba0041dd31ad99a2d03607c403.zip
chromium_src-b5c5ed04cde665ba0041dd31ad99a2d03607c403.tar.gz
chromium_src-b5c5ed04cde665ba0041dd31ad99a2d03607c403.tar.bz2
Correct issues with NativeWidgetViews ownership.
NativeWidgetView was owned by the view hierarchy which complicated the ownership of NativeWidgetViews since it would try to delete NativeWidgetViews from its destructor. NativeWidgetView has been changed to schedule a close when it is removed from its containing hierarchy. This may be problematic for reparenting but should do for now. We will need to finesse the add/remove API to correct this type of issue. NativeWidgetViews has been hardened in a few places that assumed they could reach up to a parent widget, even after the widget had been removed from its parent. BUG=none TEST=attached unittests should all pass for realz (verified in debugger, can be verified on linux views trybots too). Review URL: http://codereview.chromium.org/7348011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92246 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/widget/native_widget_views.h')
-rw-r--r--views/widget/native_widget_views.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/views/widget/native_widget_views.h b/views/widget/native_widget_views.h
index 32f1fe5a..d2c81fa 100644
--- a/views/widget/native_widget_views.h
+++ b/views/widget/native_widget_views.h
@@ -116,6 +116,7 @@ class NativeWidgetViews : public internal::NativeWidgetPrivate {
virtual void SetCursor(gfx::NativeCursor cursor) OVERRIDE;
private:
+ // These functions may return NULL during Widget destruction.
internal::NativeWidgetPrivate* GetParentNativeWidget();
const internal::NativeWidgetPrivate* GetParentNativeWidget() const;
@@ -124,7 +125,7 @@ class NativeWidgetViews : public internal::NativeWidgetPrivate {
internal::NativeWidgetDelegate* delegate_;
- internal::NativeWidgetView* view_;
+ scoped_ptr<internal::NativeWidgetView> view_;
bool active_;