diff --git a/lib/quick/qquickwebengineview.cpp b/lib/quick/qquickwebengineview.cpp index 5879066983a8bd3ece3c654c7c9e9079cea33ff8..9a728cd78ecb003b3cd1c797f4ef00c20df31594 100644 --- a/lib/quick/qquickwebengineview.cpp +++ b/lib/quick/qquickwebengineview.cpp @@ -97,10 +97,9 @@ void QQuickWebEngineViewPrivate::focusContainer() q->forceActiveFocus(); } -QQuickWebEngineView::QQuickWebEngineView() - : d_ptr(new QQuickWebEngineViewPrivate) +QQuickWebEngineView::QQuickWebEngineView(QQuickItem *parent) + : QQuickItem(*(new QQuickWebEngineViewPrivate), parent) { - d_ptr->q_ptr = this; } QQuickWebEngineView::~QQuickWebEngineView() diff --git a/lib/quick/qquickwebengineview_p.h b/lib/quick/qquickwebengineview_p.h index 2aa34c0333d26534b5fa8f6d8900d65efc8c0787..484f6bba6e4deb7355bb01452128c8020289a51d 100644 --- a/lib/quick/qquickwebengineview_p.h +++ b/lib/quick/qquickwebengineview_p.h @@ -43,7 +43,6 @@ #define QQUICKWEBENGINEVIEW_P_H #include <QQuickItem> -#include <QScopedPointer> class QQuickWebEngineViewPrivate; @@ -56,7 +55,7 @@ class QQuickWebEngineView : public QQuickItem { Q_PROPERTY(bool canGoForward READ canGoForward NOTIFY loadingStateChanged) public: - QQuickWebEngineView(); + QQuickWebEngineView(QQuickItem *parent = 0); ~QQuickWebEngineView(); QUrl url() const; @@ -82,8 +81,6 @@ protected: private: Q_DECLARE_PRIVATE(QQuickWebEngineView) - // Hides QObject::d_ptr allowing us to use the convenience macros. - QScopedPointer<QQuickWebEngineViewPrivate> d_ptr; }; QML_DECLARE_TYPE(QQuickWebEngineView) diff --git a/lib/quick/qquickwebengineview_p_p.h b/lib/quick/qquickwebengineview_p_p.h index 0997fe08c251523a9b1cffc73ad9f05e5f7c3921..a30c608836ceffb2ad90e23843e1d55366c98c0e 100644 --- a/lib/quick/qquickwebengineview_p_p.h +++ b/lib/quick/qquickwebengineview_p_p.h @@ -45,14 +45,14 @@ #include "web_contents_adapter_client.h" #include <QScopedPointer> +#include <QtQuick/private/qquickitem_p.h> class QQuickWebEngineView; class RenderWidgetHostViewQtDelegateQuick; class WebContentsAdapter; -class QQuickWebEngineViewPrivate : public WebContentsAdapterClient +class QQuickWebEngineViewPrivate : public QQuickItemPrivate, public WebContentsAdapterClient { - QQuickWebEngineView *q_ptr; Q_DECLARE_PUBLIC(QQuickWebEngineView) public: QQuickWebEngineViewPrivate(); diff --git a/lib/quick/quick.pro b/lib/quick/quick.pro index bb6acc179e097a32e26e589e6b60ab30d01e2891..cd7172a1f2aa9ffa78374f2edf358aed787cd882 100644 --- a/lib/quick/quick.pro +++ b/lib/quick/quick.pro @@ -4,6 +4,7 @@ TARGETPATH = QtWebEngine IMPORT_VERSION = 1.0 QT += qml quick +QT_PRIVATE += qml-private v8-private quick-private gui-private core-private INCLUDEPATH += ../ diff --git a/lib/widgets/Api/qwebengineview.cpp b/lib/widgets/Api/qwebengineview.cpp index a7a135fc81a61925c513ca9fdc10d78c0b1be60a..369aa6efa234d6feca8212448b1db7c7c499bcd2 100644 --- a/lib/widgets/Api/qwebengineview.cpp +++ b/lib/widgets/Api/qwebengineview.cpp @@ -49,19 +49,22 @@ #include <QUrl> QWebEngineViewPrivate::QWebEngineViewPrivate() - : m_isLoading(false) + : QWidgetPrivate(QObjectPrivateVersion) + , m_isLoading(false) , adapter(new WebContentsAdapter(this)) { } void QWebEngineViewPrivate::titleChanged(const QString &title) { - Q_EMIT q_ptr->titleChanged(title); + Q_Q(QWebEngineView); + Q_EMIT q->titleChanged(title); } void QWebEngineViewPrivate::urlChanged(const QUrl &url) { - Q_EMIT q_ptr->urlChanged(url); + Q_Q(QWebEngineView); + Q_EMIT q->urlChanged(url); } void QWebEngineViewPrivate::loadingStateChanged() @@ -99,10 +102,9 @@ RenderWidgetHostViewQtDelegate *QWebEngineViewPrivate::CreateRenderWidgetHostVie return new RenderWidgetHostViewQtDelegateWidget; } -QWebEngineView::QWebEngineView() - : d_ptr(new QWebEngineViewPrivate) +QWebEngineView::QWebEngineView(QWidget *parent) + : QWidget(*(new QWebEngineViewPrivate), parent, 0) { - d_ptr->q_ptr=this; // This causes the child RenderWidgetHostViewQtDelegateWidgets to fill this widget. setLayout(new QStackedLayout); } diff --git a/lib/widgets/Api/qwebengineview.h b/lib/widgets/Api/qwebengineview.h index a86218538ce618f30ca81888c95aa13bea42be1e..b75f623695c1084dfe84f132c308b86e58edb8ae 100644 --- a/lib/widgets/Api/qwebengineview.h +++ b/lib/widgets/Api/qwebengineview.h @@ -45,14 +45,13 @@ #include <qtwebenginewidgetsglobal.h> #include <QWidget> -#include <QScopedPointer> class QWebEngineViewPrivate; class QWEBENGINEWIDGETS_EXPORT QWebEngineView : public QWidget { Q_OBJECT public: - QWebEngineView(); + QWebEngineView(QWidget *parent = 0); ~QWebEngineView(); void load(const QUrl& url); @@ -73,7 +72,6 @@ Q_SIGNALS: private: Q_DECLARE_PRIVATE(QWebEngineView); - QScopedPointer<QWebEngineViewPrivate> d_ptr; }; #endif // QWEBENGINEVIEW_H diff --git a/lib/widgets/Api/qwebengineview_p.h b/lib/widgets/Api/qwebengineview_p.h index 5c623a0978a013c3a9b861ed8ffb2d0949a9ece5..9ac5e57e8d7cab67f41122bba123f3ca9ccab385 100644 --- a/lib/widgets/Api/qwebengineview_p.h +++ b/lib/widgets/Api/qwebengineview_p.h @@ -45,16 +45,15 @@ #include "web_contents_adapter_client.h" #include <QScopedPointer> +#include <QtWidgets/private/qwidget_p.h> class QWebEngineView; class RenderWidgetHostViewQtDelegate; class WebContentsAdapter; -class QWebEngineViewPrivate : public WebContentsAdapterClient +class QWebEngineViewPrivate : public QWidgetPrivate, public WebContentsAdapterClient { Q_DECLARE_PUBLIC(QWebEngineView) - QWebEngineView *q_ptr; - public: QWebEngineViewPrivate(); diff --git a/lib/widgets/widgets.pro b/lib/widgets/widgets.pro index 9a5591b826bd897f8eb24a634f4645279fbfd1a8..45b71284ed70b062de50796b9b75b2c741522d96 100644 --- a/lib/widgets/widgets.pro +++ b/lib/widgets/widgets.pro @@ -10,6 +10,7 @@ MODULE = webenginewidgets DEFINES += QT_BUILD_WEBENGINEWIDGETS_LIB QT += widgets +QT_PRIVATE += widgets-private gui-private core-private # FIXME: all this should eventually be turned into QT += webenginecore macx:LIBPATH = $$getOutDir()/$$getConfigDir()