diff options
author | deanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-12 13:02:31 +0000 |
---|---|---|
committer | deanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-12 13:02:31 +0000 |
commit | 31d58b18c3ae0bc157eab12371f5777f3340cabc (patch) | |
tree | 856e692aba6d6f6ec053922a4b7f7f35d1520e40 /chrome/browser | |
parent | b9074dcfccde00b06556acfaecfc9c2dbe35bf04 (diff) | |
download | chromium_src-31d58b18c3ae0bc157eab12371f5777f3340cabc.zip chromium_src-31d58b18c3ae0bc157eab12371f5777f3340cabc.tar.gz chromium_src-31d58b18c3ae0bc157eab12371f5777f3340cabc.tar.bz2 |
Have RenderWidgetHostViewGtk take ownership of its widget.
We previously left the widget floating, the reference would be sunk by the first container it was added to, if removed from this container it would be destroyed. This was happening in WebContentsViewGtk, and then we were double-destroying the widget in RenderWidgetHostViewGtk::Destroy().
BUG=8707
Review URL: http://codereview.chromium.org/42119
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11530 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/renderer_host/render_widget_host_view_gtk.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host_view_gtk.cc b/chrome/browser/renderer_host/render_widget_host_view_gtk.cc index 794d5ae..ad9ffdf 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_gtk.cc +++ b/chrome/browser/renderer_host/render_widget_host_view_gtk.cc @@ -136,6 +136,11 @@ RenderWidgetHostViewGtk::RenderWidgetHostViewGtk(RenderWidgetHost* widget_host) : host_(widget_host) { host_->set_view(this); view_ = RenderWidgetHostViewGtkWidget::CreateNewWidget(this); + // BUG 8707: We will live in some container (in this case in WebContents). + // We want to destroy during Destroy(), independent of how we are managed in + // any containers. We need to sink the reference here to "own" the widget so + // it can be added and removed from containers without being destroyed. + g_object_ref_sink(view_); } RenderWidgetHostViewGtk::~RenderWidgetHostViewGtk() { |