diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-08-08 14:10:46 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-12 12:06:35 +0200 |
commit | 2ee75c4411394981f5bbf50c0edffe42b6343c90 (patch) | |
tree | 387a0dd446a7d508eb099a4d416d6fddded0662d /lib | |
parent | 80ead68ca80bca4f33e824064bff5af3b939a803 (diff) |
Simplify the ownership between RWHVQt and RWHVQtDelegate.
Let the RWHVQt explicitly own its delegate.
Keep the same behavior by letting RWHVQt::Destroy delete itself directly
like done in RWHVGtk instead of deleting the RWHVDelegate which would
then delete its RWHV.
Change-Id: I051c95d608964ebcd66d3ccbe728f63c0ca397ae
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/render_widget_host_view_qt.cpp | 3 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt_delegate.cpp | 10 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt_delegate.h | 5 | ||||
-rw-r--r-- | lib/web_contents_view_qt.cpp | 1 |
4 files changed, 10 insertions, 9 deletions
diff --git a/lib/render_widget_host_view_qt.cpp b/lib/render_widget_host_view_qt.cpp index 30670ffcd..d3a22f5cc 100644 --- a/lib/render_widget_host_view_qt.cpp +++ b/lib/render_widget_host_view_qt.cpp @@ -109,6 +109,7 @@ RenderWidgetHostViewQt::~RenderWidgetHostViewQt() void RenderWidgetHostViewQt::SetDelegate(RenderWidgetHostViewQtDelegate* delegate) { m_delegate.reset(delegate); + delegate->setView(this); } bool RenderWidgetHostViewQt::handleEvent(QEvent* event) { @@ -461,7 +462,7 @@ void RenderWidgetHostViewQt::RenderProcessGone(base::TerminationStatus, int) void RenderWidgetHostViewQt::Destroy() { - m_delegate.reset(); + delete this; } void RenderWidgetHostViewQt::SetTooltipText(const string16&) diff --git a/lib/render_widget_host_view_qt_delegate.cpp b/lib/render_widget_host_view_qt_delegate.cpp index 39365206c..5b6f25fce 100644 --- a/lib/render_widget_host_view_qt_delegate.cpp +++ b/lib/render_widget_host_view_qt_delegate.cpp @@ -63,11 +63,6 @@ RenderWidgetHostViewQtDelegate::~RenderWidgetHostViewQtDelegate() { } -void RenderWidgetHostViewQtDelegate::resetView(RenderWidgetHostViewQt* view) -{ - m_view.reset(view); -} - void RenderWidgetHostViewQtDelegate::paint(QPainter *painter, const QRectF &boundingRect) { if (m_backingStore) @@ -90,3 +85,8 @@ bool RenderWidgetHostViewQtDelegate::forwardEvent(QEvent *event) { return (m_view && m_view->handleEvent(event)); } + +void RenderWidgetHostViewQtDelegate::setView(RenderWidgetHostViewQt* view) +{ + m_view = view; +} diff --git a/lib/render_widget_host_view_qt_delegate.h b/lib/render_widget_host_view_qt_delegate.h index d3a58293f..a4ccca337 100644 --- a/lib/render_widget_host_view_qt_delegate.h +++ b/lib/render_widget_host_view_qt_delegate.h @@ -68,7 +68,6 @@ public: virtual void update(const QRect& rect = QRect()) = 0; virtual void updateCursor(const QCursor &) = 0; virtual void resize(int width, int height) = 0; - void resetView(RenderWidgetHostViewQt*); protected: static bool isCompositingModeForced(); @@ -80,8 +79,10 @@ protected: bool forwardEvent(QEvent*); private: - QScopedPointer<RenderWidgetHostViewQt> m_view; + void setView(RenderWidgetHostViewQt*); + RenderWidgetHostViewQt *m_view; BackingStoreQt *m_backingStore; + friend class RenderWidgetHostViewQt; }; #endif // RENDER_WIDGET_HOST_VIEW_QT_DELEGATE_H diff --git a/lib/web_contents_view_qt.cpp b/lib/web_contents_view_qt.cpp index 7903d24fe..f447349a8 100644 --- a/lib/web_contents_view_qt.cpp +++ b/lib/web_contents_view_qt.cpp @@ -51,7 +51,6 @@ content::RenderWidgetHostView* WebContentsViewQt::CreateViewForWidget(content::R { RenderWidgetHostViewQt *view = new RenderWidgetHostViewQt(render_widget_host); RenderWidgetHostViewQtDelegate* viewDelegate = m_client->CreateRenderWidgetHostViewQtDelegate(); - viewDelegate->resetView(view); view->SetDelegate(viewDelegate); return view; |