summaryrefslogtreecommitdiffstats
path: root/lib/quick
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-10-31 17:06:30 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-06 17:34:20 +0100
commitfb62607e950ac711f7366b378d8d5f952d4fd1b3 (patch)
tree5ceb5adaee848f63ec9f27188068e496fb099b8e /lib/quick
parentfbf3e79512358a3eb1e6589b10ac01917b2e94d0 (diff)
Make RenderWidgetHostViewQtDelegate a pure interface.
RenderWidgetHostViewQtDelegate acts as a bidirectional interface to avoid exporting Chromium symbols outside of the core dynamic library. The problem is that, other than this, from the top layer point of view, its responsibilities are the same as RenderWidgetHostViewQt, and it would be better not to split its logic without properly defined responsibilities. Using it as a base class and interfacing through its protected methods is also cumbersome and make the destination of calls on the upper layer difficult to discern. Use instead a dual pure interface mechanism like WebContentsAdapter and pass the callback client interface directly in WebContentsAdapterClient::CreateRenderWidgetHostViewQtDelegate. This allows RenderWidgetHostViewQtDelegate to be solely what it should be, an interface. Change-Id: I4e55439ae7f9539cc9e360f0756fbf391405f3b7 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'lib/quick')
-rw-r--r--lib/quick/qquickwebengineview.cpp6
-rw-r--r--lib/quick/qquickwebengineview_p_p.h2
-rw-r--r--lib/quick/render_widget_host_view_qt_delegate_quick.cpp14
-rw-r--r--lib/quick/render_widget_host_view_qt_delegate_quick.h35
4 files changed, 30 insertions, 27 deletions
diff --git a/lib/quick/qquickwebengineview.cpp b/lib/quick/qquickwebengineview.cpp
index 4b58c6c04..0fad5c985 100644
--- a/lib/quick/qquickwebengineview.cpp
+++ b/lib/quick/qquickwebengineview.cpp
@@ -57,13 +57,13 @@ QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate()
adapter->initialize(this);
}
-RenderWidgetHostViewQtDelegate *QQuickWebEngineViewPrivate::CreateRenderWidgetHostViewQtDelegate(CompositingMode mode)
+RenderWidgetHostViewQtDelegate *QQuickWebEngineViewPrivate::CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQtDelegateClient *client, CompositingMode mode)
{
#if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0))
if (mode == DelegatedCompositing)
- return new RenderWidgetHostViewQtDelegateQuick;
+ return new RenderWidgetHostViewQtDelegateQuick(client);
#endif
- return new RenderWidgetHostViewQtDelegateQuickPainted;
+ return new RenderWidgetHostViewQtDelegateQuickPainted(client);
}
void QQuickWebEngineViewPrivate::titleChanged(const QString &title)
diff --git a/lib/quick/qquickwebengineview_p_p.h b/lib/quick/qquickwebengineview_p_p.h
index e32ac5c63..99f0c943e 100644
--- a/lib/quick/qquickwebengineview_p_p.h
+++ b/lib/quick/qquickwebengineview_p_p.h
@@ -58,7 +58,7 @@ public:
Q_DECLARE_PUBLIC(QQuickWebEngineView)
QQuickWebEngineViewPrivate();
- virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(CompositingMode mode) Q_DECL_OVERRIDE;
+ virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQtDelegateClient *client, CompositingMode mode) Q_DECL_OVERRIDE;
virtual void titleChanged(const QString&) Q_DECL_OVERRIDE;
virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void iconChanged(const QUrl&) Q_DECL_OVERRIDE;
diff --git a/lib/quick/render_widget_host_view_qt_delegate_quick.cpp b/lib/quick/render_widget_host_view_qt_delegate_quick.cpp
index b77503f2c..8989759f6 100644
--- a/lib/quick/render_widget_host_view_qt_delegate_quick.cpp
+++ b/lib/quick/render_widget_host_view_qt_delegate_quick.cpp
@@ -42,8 +42,8 @@
#include "render_widget_host_view_qt_delegate_quick.h"
#if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0))
-RenderWidgetHostViewQtDelegateQuick::RenderWidgetHostViewQtDelegateQuick(QQuickItem *parent)
- : RenderWidgetHostViewQtDelegateQuickBase<QQuickItem>(parent)
+RenderWidgetHostViewQtDelegateQuick::RenderWidgetHostViewQtDelegateQuick(RenderWidgetHostViewQtDelegateClient *client, QQuickItem *parent)
+ : RenderWidgetHostViewQtDelegateQuickBase<QQuickItem>(client, parent)
{
setFlag(ItemHasContents);
}
@@ -60,13 +60,13 @@ void RenderWidgetHostViewQtDelegateQuick::update(const QRect&)
QSGNode *RenderWidgetHostViewQtDelegateQuick::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
- return RenderWidgetHostViewQtDelegate::updatePaintNode(oldNode, QQuickItem::window());
+ return m_client->updatePaintNode(oldNode, QQuickItem::window());
}
#endif // QT_VERSION
-RenderWidgetHostViewQtDelegateQuickPainted::RenderWidgetHostViewQtDelegateQuickPainted(QQuickItem *parent)
- : RenderWidgetHostViewQtDelegateQuickBase<QQuickPaintedItem>(parent)
+RenderWidgetHostViewQtDelegateQuickPainted::RenderWidgetHostViewQtDelegateQuickPainted(RenderWidgetHostViewQtDelegateClient *client, QQuickItem *parent)
+ : RenderWidgetHostViewQtDelegateQuickBase<QQuickPaintedItem>(client, parent)
{
}
@@ -84,7 +84,7 @@ void RenderWidgetHostViewQtDelegateQuickPainted::update(const QRect& rect)
void RenderWidgetHostViewQtDelegateQuickPainted::paint(QPainter *painter)
{
- RenderWidgetHostViewQtDelegate::paint(painter, boundingRect());
+ m_client->paint(painter, boundingRect());
}
void RenderWidgetHostViewQtDelegateQuickPainted::updatePolish()
@@ -92,5 +92,5 @@ void RenderWidgetHostViewQtDelegateQuickPainted::updatePolish()
// paint will be called from the scene graph thread and this doesn't play well
// with chromium's use of TLS while getting the backing store.
// updatePolish() should be called from the GUI thread right before the rendering thread starts.
- fetchBackingStore();
+ m_client->fetchBackingStore();
}
diff --git a/lib/quick/render_widget_host_view_qt_delegate_quick.h b/lib/quick/render_widget_host_view_qt_delegate_quick.h
index c9f688958..80f5baca8 100644
--- a/lib/quick/render_widget_host_view_qt_delegate_quick.h
+++ b/lib/quick/render_widget_host_view_qt_delegate_quick.h
@@ -56,8 +56,9 @@ template<typename ItemBaseT>
class RenderWidgetHostViewQtDelegateQuickBase : public ItemBaseT, public RenderWidgetHostViewQtDelegate
{
public:
- RenderWidgetHostViewQtDelegateQuickBase(QQuickItem *parent = 0)
+ RenderWidgetHostViewQtDelegateQuickBase(RenderWidgetHostViewQtDelegateClient *client, QQuickItem *parent = 0)
: ItemBaseT(parent)
+ , m_client(client)
{
this->setAcceptedMouseButtons(Qt::AllButtons);
this->setAcceptHoverEvents(true);
@@ -126,58 +127,58 @@ public:
void focusInEvent(QFocusEvent *event)
{
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void focusOutEvent(QFocusEvent *event)
{
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void mousePressEvent(QMouseEvent *event)
{
this->setFocus(true);
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void mouseMoveEvent(QMouseEvent *event)
{
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void mouseReleaseEvent(QMouseEvent *event)
{
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void mouseDoubleClickEvent(QMouseEvent *event)
{
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void keyPressEvent(QKeyEvent *event)
{
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void keyReleaseEvent(QKeyEvent *event)
{
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void wheelEvent(QWheelEvent *event)
{
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void touchEvent(QTouchEvent *event)
{
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void hoverMoveEvent(QHoverEvent *event)
{
- forwardEvent(event);
+ m_client->forwardEvent(event);
}
void inputMethodStateChanged(bool editorVisible)
@@ -192,15 +193,17 @@ public:
QVariant inputMethodQuery(Qt::InputMethodQuery query) const
{
- return forwardInputMethodQuery(query);
+ return m_client->inputMethodQuery(query);
}
protected:
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
ItemBaseT::geometryChanged(newGeometry, oldGeometry);
- notifyResize();
+ m_client->notifyResize();
}
+
+ RenderWidgetHostViewQtDelegateClient *m_client;
};
#if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0))
@@ -208,7 +211,7 @@ class RenderWidgetHostViewQtDelegateQuick : public RenderWidgetHostViewQtDelegat
{
Q_OBJECT
public:
- RenderWidgetHostViewQtDelegateQuick(QQuickItem *parent = 0);
+ RenderWidgetHostViewQtDelegateQuick(RenderWidgetHostViewQtDelegateClient *client, QQuickItem *parent = 0);
virtual WId nativeWindowIdForCompositor() const;
virtual void update(const QRect& rect = QRect());
@@ -221,7 +224,7 @@ class RenderWidgetHostViewQtDelegateQuickPainted : public RenderWidgetHostViewQt
{
Q_OBJECT
public:
- RenderWidgetHostViewQtDelegateQuickPainted(QQuickItem *parent = 0);
+ RenderWidgetHostViewQtDelegateQuickPainted(RenderWidgetHostViewQtDelegateClient *client, QQuickItem *parent = 0);
virtual WId nativeWindowIdForCompositor() const;
virtual void update(const QRect& rect = QRect());