From 1c2a4da1c73bfc2456c59146ce615b7e2122e90e Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Mon, 7 Jul 2014 18:12:15 +0200 Subject: Don't inherit from Qt private types Do the d_ptr magic ourselves to avoid having to include private headers from qtcore, qtgui and qtdeclarative. It is hackish to hide QObject's d_ptr member to have the macros working in a public class, but if anything goes wrong we just need to replace the private macro convenience while maintaining the binary compatibility of the stored extra opaque pointer. Change-Id: Idb92f4f902826bef9068a5c2ef6ea31fc3fa15b2 Reviewed-by: Andras Becsi --- src/webengine/api/qquickwebengineview.cpp | 8 +++++--- src/webengine/api/qquickwebengineview_p.h | 2 ++ src/webengine/api/qquickwebengineview_p_p.h | 4 ++-- src/webengine/render_widget_host_view_qt_delegate_quick.cpp | 1 + 4 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/webengine') diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index cbd45842d..ad57f24ba 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -384,8 +384,9 @@ QObject *QQuickWebEngineViewPrivate::accessibilityParentObject() void QQuickWebEngineViewPrivate::setDevicePixelRatio(qreal devicePixelRatio) { + Q_Q(QQuickWebEngineView); this->devicePixelRatio = devicePixelRatio; - QScreen *screen = window ? window->screen() : QGuiApplication::primaryScreen(); + QScreen *screen = q->window() ? q->window()->screen() : QGuiApplication::primaryScreen(); m_dpiScale = devicePixelRatio / screen->devicePixelRatio(); } @@ -463,10 +464,11 @@ void QQuickWebEngineViewPrivate::adoptWebContents(WebContentsAdapter *webContent } QQuickWebEngineView::QQuickWebEngineView(QQuickItem *parent) - : QQuickItem(*(new QQuickWebEngineViewPrivate), parent) + : QQuickItem(parent) + , d_ptr(new QQuickWebEngineViewPrivate) { Q_D(QQuickWebEngineView); - d->e->q_ptr = this; + d->e->q_ptr = d->q_ptr = this; d->adapter->initialize(d); this->setActiveFocusOnTab(true); this->setFlag(QQuickItem::ItemIsFocusScope); diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h index c03f1ec59..12b9ee163 100644 --- a/src/webengine/api/qquickwebengineview_p.h +++ b/src/webengine/api/qquickwebengineview_p.h @@ -132,6 +132,8 @@ protected: private: Q_DECLARE_PRIVATE(QQuickWebEngineView) + QScopedPointer d_ptr; + friend class QQuickWebEngineViewExperimental; friend class QQuickWebEngineViewExperimentalExtension; friend class QQuickWebEngineNewViewRequest; diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index e4a315d1a..25b20a0e8 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -49,7 +49,6 @@ #include #include #include -#include #include class WebContentsAdapter; @@ -128,10 +127,11 @@ private: Q_DECLARE_PUBLIC(QQuickWebEngineView) }; -class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineViewPrivate : public QQuickItemPrivate, public WebContentsAdapterClient +class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineViewPrivate : public WebContentsAdapterClient { public: Q_DECLARE_PUBLIC(QQuickWebEngineView) + QQuickWebEngineView *q_ptr; QQuickWebEngineViewPrivate(); ~QQuickWebEngineViewPrivate(); diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp index 26afda08f..e968f450b 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp @@ -48,6 +48,7 @@ #include #include #include +#include RenderWidgetHostViewQtDelegateQuick::RenderWidgetHostViewQtDelegateQuick(RenderWidgetHostViewQtDelegateClient *client, bool isPopup) : m_client(client) -- cgit v1.2.3