diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-01-07 12:52:58 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-01-07 14:01:05 +0000 |
commit | 4f85049475de1533ef8de6e0f441d326ce9f0020 (patch) | |
tree | ecbe78a657486d6c5f3d224631d9f3f63ab516db | |
parent | 9362667e56a328126f758ca31dbb824166f20dd3 (diff) |
Make lazy contentsAdapter initialization lazier
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 <michael.bruning@theqtcompany.com>
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 11 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview_p.h | 3 |
2 files changed, 12 insertions, 2 deletions
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 <QScreen> #include <QStringBuilder> #include <QUrl> +#include <QTimer> #ifndef QT_NO_ACCESSIBILITY #include <private/qquickaccessibleattached_p.h> #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(); } diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h index 02e820fe5..98d0bbc1d 100644 --- a/src/webengine/api/qquickwebengineview_p.h +++ b/src/webengine/api/qquickwebengineview_p.h @@ -290,6 +290,9 @@ public Q_SLOTS: Q_REVISION(2) void setActiveFocusOnPress(bool arg); Q_REVISION(2) void triggerWebAction(WebAction action); +private Q_SLOTS: + void lazyInitialize(); + Q_SIGNALS: void titleChanged(); void urlChanged(); |