summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-08-08 14:10:46 +0200
committerZeno Albisser <zeno.albisser@digia.com>2013-08-12 12:06:35 +0200
commit2ee75c4411394981f5bbf50c0edffe42b6343c90 (patch)
tree387a0dd446a7d508eb099a4d416d6fddded0662d /lib
parent80ead68ca80bca4f33e824064bff5af3b939a803 (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.cpp3
-rw-r--r--lib/render_widget_host_view_qt_delegate.cpp10
-rw-r--r--lib/render_widget_host_view_qt_delegate.h5
-rw-r--r--lib/web_contents_view_qt.cpp1
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;