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/widgets | |
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/widgets')
-rw-r--r-- | lib/widgets/Api/qwebenginepage.cpp | 4 | ||||
-rw-r--r-- | lib/widgets/Api/qwebenginepage_p.h | 2 | ||||
-rw-r--r-- | lib/widgets/render_widget_host_view_qt_delegate_widget.cpp | 13 | ||||
-rw-r--r-- | lib/widgets/render_widget_host_view_qt_delegate_widget.h | 5 |
4 files changed, 14 insertions, 10 deletions
diff --git a/lib/widgets/Api/qwebenginepage.cpp b/lib/widgets/Api/qwebenginepage.cpp index e37c6126d..bde316f77 100644 --- a/lib/widgets/Api/qwebenginepage.cpp +++ b/lib/widgets/Api/qwebenginepage.cpp @@ -58,9 +58,9 @@ QWebEnginePagePrivate::~QWebEnginePagePrivate() delete history; } -RenderWidgetHostViewQtDelegate *QWebEnginePagePrivate::CreateRenderWidgetHostViewQtDelegate(CompositingMode mode) +RenderWidgetHostViewQtDelegate *QWebEnginePagePrivate::CreateRenderWidgetHostViewQtDelegate(RenderWidgetHostViewQtDelegateClient *client, CompositingMode mode) { - return new RenderWidgetHostViewQtDelegateWidget(mode); + return new RenderWidgetHostViewQtDelegateWidget(client, mode); } void QWebEnginePagePrivate::titleChanged(const QString &title) diff --git a/lib/widgets/Api/qwebenginepage_p.h b/lib/widgets/Api/qwebenginepage_p.h index 89534b20d..8822cd094 100644 --- a/lib/widgets/Api/qwebenginepage_p.h +++ b/lib/widgets/Api/qwebenginepage_p.h @@ -64,7 +64,7 @@ public: QWebEnginePagePrivate(); ~QWebEnginePagePrivate(); - 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/widgets/render_widget_host_view_qt_delegate_widget.cpp b/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp index 1eb52378c..ee730db2b 100644 --- a/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp @@ -51,8 +51,9 @@ #include <QWindow> #include <QtWidgets/QApplication> -RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(WebContentsAdapterClient::CompositingMode mode, QWidget *parent) +RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(RenderWidgetHostViewQtDelegateClient *client, WebContentsAdapterClient::CompositingMode mode, QWidget *parent) : QWidget(parent) + , m_client(client) { setFocusPolicy(Qt::ClickFocus); setMouseTracking(true); @@ -160,25 +161,25 @@ void RenderWidgetHostViewQtDelegateWidget::inputMethodStateChanged(bool editorVi QVariant RenderWidgetHostViewQtDelegateWidget::inputMethodQuery(Qt::InputMethodQuery query) const { - return forwardInputMethodQuery(query); + return m_client->inputMethodQuery(query); } void RenderWidgetHostViewQtDelegateWidget::paintEvent(QPaintEvent * event) { QPainter painter(this); - fetchBackingStore(); - paint(&painter, event->rect()); + m_client->fetchBackingStore(); + m_client->paint(&painter, event->rect()); } void RenderWidgetHostViewQtDelegateWidget::resizeEvent(QResizeEvent *resizeEvent) { Q_UNUSED(resizeEvent); - notifyResize(); + m_client->notifyResize(); } bool RenderWidgetHostViewQtDelegateWidget::event(QEvent *event) { - if (!forwardEvent(event)) + if (!m_client->forwardEvent(event)) return QWidget::event(event); return true; } diff --git a/lib/widgets/render_widget_host_view_qt_delegate_widget.h b/lib/widgets/render_widget_host_view_qt_delegate_widget.h index b8a1ba115..fe5102213 100644 --- a/lib/widgets/render_widget_host_view_qt_delegate_widget.h +++ b/lib/widgets/render_widget_host_view_qt_delegate_widget.h @@ -56,7 +56,7 @@ QT_END_NAMESPACE class RenderWidgetHostViewQtDelegateWidget : public QWidget, public RenderWidgetHostViewQtDelegate { public: - RenderWidgetHostViewQtDelegateWidget(WebContentsAdapterClient::CompositingMode mode, QWidget *parent = 0); + RenderWidgetHostViewQtDelegateWidget(RenderWidgetHostViewQtDelegateClient *client, WebContentsAdapterClient::CompositingMode mode, QWidget *parent = 0); virtual void initAsChild(WebContentsAdapterClient* container); virtual void initAsPopup(const QRect&); @@ -79,6 +79,9 @@ protected: void resizeEvent(QResizeEvent *resizeEvent); QVariant inputMethodQuery(Qt::InputMethodQuery query) const; + +private: + RenderWidgetHostViewQtDelegateClient *m_client; }; #endif |