summaryrefslogtreecommitdiffstats
path: root/lib/widgets
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/widgets
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/widgets')
-rw-r--r--lib/widgets/Api/qwebenginepage.cpp4
-rw-r--r--lib/widgets/Api/qwebenginepage_p.h2
-rw-r--r--lib/widgets/render_widget_host_view_qt_delegate_widget.cpp13
-rw-r--r--lib/widgets/render_widget_host_view_qt_delegate_widget.h5
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