summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api
diff options
context:
space:
mode:
authorMichael BrĂ¼ning <michael.bruning@qt.io>2021-01-22 17:09:13 +0100
committerMichael BrĂ¼ning <michael.bruning@qt.io>2021-03-11 13:22:36 +0100
commitb93c7e4cdb516ade74c5de6a63b5e4d8bbf45f22 (patch)
treef24004ff182f254dbdd9dd3680f5e5e64c1632a2 /src/webenginewidgets/api
parentf121523512ab70db7d9b1e639841c9ebc3eae9a1 (diff)
Only disconnect QWebEnginePage signals that QWebEngineView connected
When the QWebEnginePage changed on a QWebEngineView, all signal connec- tions between the view and the previous page were removed as well, even those that the user connected themself. To prevent unexpected behavior, only disconnect the signals that the view connected to automatically and leave the rest of the connections intact when the page on the view is changed. Fixes: QTBUG-90509 Change-Id: Icac3e3be0b598dec8107e8fffdf7f25dd88a4b71 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index b06d99478..b1346f65e 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -62,7 +62,15 @@ void QWebEngineViewPrivate::pageChanged(QWebEnginePage *oldPage, QWebEnginePage
if (oldPage) {
oldPage->setVisible(false);
- oldPage->disconnect(q);
+ QObject::disconnect(oldPage, &QWebEnginePage::titleChanged, q, &QWebEngineView::titleChanged);
+ QObject::disconnect(oldPage, &QWebEnginePage::urlChanged, q, &QWebEngineView::urlChanged);
+ QObject::disconnect(oldPage, &QWebEnginePage::iconUrlChanged, q, &QWebEngineView::iconUrlChanged);
+ QObject::disconnect(oldPage, &QWebEnginePage::iconChanged, q, &QWebEngineView::iconChanged);
+ QObject::disconnect(oldPage, &QWebEnginePage::loadStarted, q, &QWebEngineView::loadStarted);
+ QObject::disconnect(oldPage, &QWebEnginePage::loadProgress, q, &QWebEngineView::loadProgress);
+ QObject::disconnect(oldPage, &QWebEnginePage::loadFinished, q, &QWebEngineView::loadFinished);
+ QObject::disconnect(oldPage, &QWebEnginePage::selectionChanged, q, &QWebEngineView::selectionChanged);
+ QObject::disconnect(oldPage, &QWebEnginePage::renderProcessTerminated, q, &QWebEngineView::renderProcessTerminated);
}
if (newPage) {