diff options
author | Michael BrĂ¼ning <michael.bruning@qt.io> | 2021-01-22 17:09:13 +0100 |
---|---|---|
committer | Michael BrĂ¼ning <michael.bruning@qt.io> | 2021-03-11 13:22:36 +0100 |
commit | b93c7e4cdb516ade74c5de6a63b5e4d8bbf45f22 (patch) | |
tree | f24004ff182f254dbdd9dd3680f5e5e64c1632a2 /src/webenginewidgets/api | |
parent | f121523512ab70db7d9b1e639841c9ebc3eae9a1 (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.cpp | 10 |
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) { |