diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-10-31 17:06:30 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-06 17:34:20 +0100 |
commit | fb62607e950ac711f7366b378d8d5f952d4fd1b3 (patch) | |
tree | 5ceb5adaee848f63ec9f27188068e496fb099b8e /lib/quick | |
parent | fbf3e79512358a3eb1e6589b10ac01917b2e94d0 (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.cpp | 6 | ||||
-rw-r--r-- | lib/quick/qquickwebengineview_p_p.h | 2 | ||||
-rw-r--r-- | lib/quick/render_widget_host_view_qt_delegate_quick.cpp | 14 | ||||
-rw-r--r-- | lib/quick/render_widget_host_view_qt_delegate_quick.h | 35 |
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()); |