summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-01-07 12:52:58 +0100
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-01-07 14:01:05 +0000
commit4f85049475de1533ef8de6e0f441d326ce9f0020 (patch)
treeecbe78a657486d6c5f3d224631d9f3f63ab516db
parent9362667e56a328126f758ca31dbb824166f20dd3 (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.cpp11
-rw-r--r--src/webengine/api/qquickwebengineview_p.h3
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();