From 4f85049475de1533ef8de6e0f441d326ce9f0020 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 7 Jan 2016 12:52:58 +0100 Subject: Make lazy contentsAdapter initialization lazier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By postponing the creation of the contents adapter until the eventloop is started we can avoid creating it multiple times if the profile is changed during QML loading. This also works around a bug on startup of quicknanobrowser in single process mode, but doesn't solve the underlying problem. Change-Id: I8859fd91dd828658b363ebf89ca619a193deaefc Task-number: QTBUG-50256 Reviewed-by: Michael BrĂ¼ning --- src/webengine/api/qquickwebengineview.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/webengine/api/qquickwebengineview.cpp') diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 6f39f6dba..b00ded4de 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -77,6 +77,7 @@ #include #include #include +#include #ifndef QT_NO_ACCESSIBILITY #include #endif // QT_NO_ACCESSIBILITY @@ -779,7 +780,7 @@ void QQuickWebEngineView::setUrl(const QUrl& url) d->explicitUrl = url; if (d->adapter) d->adapter->load(url); - if (!qmlEngine(this)) + if (!qmlEngine(this) || isComponentComplete()) d->ensureContentsAdapter(); } @@ -793,7 +794,7 @@ void QQuickWebEngineView::loadHtml(const QString &html, const QUrl &baseUrl) { Q_D(QQuickWebEngineView); d->explicitUrl = QUrl(); - if (!qmlEngine(this)) + if (!qmlEngine(this) || isComponentComplete()) d->ensureContentsAdapter(); if (d->adapter) d->adapter->setContent(html.toUtf8(), QStringLiteral("text/html;charset=UTF-8"), baseUrl); @@ -1417,6 +1418,12 @@ void QQuickWebEngineView::componentComplete() { Q_D(QQuickWebEngineView); QQuickItem::componentComplete(); + QTimer::singleShot(0, this, &QQuickWebEngineView::lazyInitialize); +} + +void QQuickWebEngineView::lazyInitialize() +{ + Q_D(QQuickWebEngineView); d->ensureContentsAdapter(); } -- cgit v1.2.3