diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 3d8f9389aed72bec49d6ba148bef5c7a4034a20c..187565a7618ed1a15cb80bdee054bbeb8e8fd7e7 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -322,7 +322,7 @@ void QWebEnginePagePrivate::iconChanged(const QUrl &url) void QWebEnginePagePrivate::loadProgressChanged(int progress) { Q_Q(QWebEnginePage); - Q_EMIT q->loadProgress(progress); + QTimer::singleShot(0, q, [q, progress] () { Q_EMIT q->loadProgress(progress); }); } void QWebEnginePagePrivate::didUpdateTargetURL(const QUrl &hoveredUrl) diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp index 8b36d5a6fa6beb8aa736fffc9f4e1b45065bd0aa..cb6e9e405a49a6608c60ebbe1e3ad975218d9560 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp @@ -2216,11 +2216,13 @@ public: connect(page, SIGNAL(loadProgress(int)), SLOT(onLoadProgress(int))); QState* waitingForLoadStarted = new QState(this); + QState* waitingForFirstLoadProgress = new QState(this); QState* waitingForLastLoadProgress = new QState(this); QState* waitingForLoadFinished = new QState(this); QFinalState* final = new QFinalState(this); - waitingForLoadStarted->addTransition(page, SIGNAL(loadStarted()), waitingForLastLoadProgress); + waitingForLoadStarted->addTransition(page, SIGNAL(loadStarted()), waitingForFirstLoadProgress); + waitingForFirstLoadProgress->addTransition(this, SIGNAL(firstLoadProgress()), waitingForLastLoadProgress); waitingForLastLoadProgress->addTransition(this, SIGNAL(lastLoadProgress()), waitingForLoadFinished); waitingForLoadFinished->addTransition(page, SIGNAL(loadFinished(bool)), final); @@ -2234,10 +2236,13 @@ public: public Q_SLOTS: void onLoadProgress(int progress) { - if (progress == 100) + if (progress == 0) + emit firstLoadProgress(); + else if (progress == 100) emit lastLoadProgress(); } Q_SIGNALS: + void firstLoadProgress(); void lastLoadProgress(); };