summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authordeanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-12 13:02:31 +0000
committerdeanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-12 13:02:31 +0000
commit31d58b18c3ae0bc157eab12371f5777f3340cabc (patch)
tree856e692aba6d6f6ec053922a4b7f7f35d1520e40 /chrome/browser
parentb9074dcfccde00b06556acfaecfc9c2dbe35bf04 (diff)
downloadchromium_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.cc5
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() {