diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2019-07-29 13:10:14 +0200 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2019-08-20 09:19:01 +0200 |
commit | 1c33a4a6ae07106513a8105ebbc2d0c65363b333 (patch) | |
tree | 62cb3291e8de873908c774890f44dd2a080ba559 /src/webenginewidgets/api/qwebengineview.cpp | |
parent | b1bdb599a397d3f8d068b8619d32061c20e13e7c (diff) |
Fix QWebEnginePage visibility state
Calling
view.show();
view.load(...);
view.hide();
results in a WebContents in visible state because the first call to show() is
delayed via a timer and never canceled so it takes effect after the hide().
Also, the page's visibility state is not updated when changing views, so that a
visible QWebEngineView can be set to display a hidden QWebEnginePage.
Fixes: QTBUG-77209
Change-Id: I0243c659f4039a35c36e04ea55c5972666170fd0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/webenginewidgets/api/qwebengineview.cpp')
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 6c08df343..6e1138522 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -61,6 +61,7 @@ void QWebEngineViewPrivate::pageChanged(QWebEnginePage *oldPage, QWebEnginePage Q_Q(QWebEngineView); if (oldPage) { + oldPage->d_ptr->wasHidden(); oldPage->disconnect(q); } @@ -74,6 +75,8 @@ void QWebEngineViewPrivate::pageChanged(QWebEnginePage *oldPage, QWebEnginePage QObject::connect(newPage, &QWebEnginePage::loadFinished, q, &QWebEngineView::loadFinished); QObject::connect(newPage, &QWebEnginePage::selectionChanged, q, &QWebEngineView::selectionChanged); QObject::connect(newPage, &QWebEnginePage::renderProcessTerminated, q, &QWebEngineView::renderProcessTerminated); + if (q->isVisible()) + newPage->d_ptr->wasShown(); } auto oldUrl = oldPage ? oldPage->url() : QUrl(); |