diff options
author | Michal Klocek <michal.klocek@qt.io> | 2018-12-11 18:13:51 +0100 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2019-01-09 18:47:25 +0000 |
commit | f661543d54c4bb453c3f01e11544b39c98d32e95 (patch) | |
tree | e95f64ab0671a0bdd52210ccca3b1732a7e42ad4 | |
parent | fc382c92021954593e6d8d07ee3f0792c4ad5c17 (diff) |
Fix hide/show of delegate widget
For QQuickWidget::show does not work correctly
if widget was not hidden.
Fixes: QTBUG-72299
Change-Id: I12fba8c18cbf3f847d30de8b057a50e6d9917fde
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
-rw-r--r-- | src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | 1 | ||||
-rw-r--r-- | tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | 23 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp index 900ed3324..55bdb3a62 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -277,6 +277,7 @@ void RenderWidgetHostViewQtDelegateWidget::show() void RenderWidgetHostViewQtDelegateWidget::hide() { m_rootItem->setVisible(false); + QQuickWidget::hide(); } bool RenderWidgetHostViewQtDelegateWidget::isVisible() const diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp index c7d3ccca7..839bc8c0c 100644 --- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp +++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp @@ -46,6 +46,7 @@ #include <QTcpSocket> #include <QStyle> #include <QtWidgets/qaction.h> +#include <QWebEngineProfile> #define VERIFY_INPUTMETHOD_HINTS(actual, expect) \ QVERIFY(actual == (expect | Qt::ImhNoPredictiveText | Qt::ImhNoTextHandles | Qt::ImhNoEditMenu)); @@ -193,6 +194,7 @@ private Q_SLOTS: void jsKeyboardEvent(); void deletePage(); void closeOpenerTab(); + void switchPage(); }; // This will be called before the first test function is executed. @@ -3173,5 +3175,26 @@ void tst_QWebEngineView::closeOpenerTab() QVERIFY(newView->focusProxy()->isVisible()); } +void tst_QWebEngineView::switchPage() +{ + QWebEngineProfile profile; + QWebEnginePage page1(&profile); + QWebEnginePage page2(&profile); + QSignalSpy loadFinishedSpy1(&page1, SIGNAL(loadFinished(bool))); + QSignalSpy loadFinishedSpy2(&page2, SIGNAL(loadFinished(bool))); + page1.setHtml("<html><body bgcolor=\"#000000\"></body></html>"); + page2.setHtml("<html><body bgcolor=\"#ffffff\"></body></html>"); + QTRY_VERIFY(loadFinishedSpy1.count() && loadFinishedSpy2.count()); + QWebEngineView webView; + webView.resize(300,300); + webView.show(); + webView.setPage(&page1); + QTRY_COMPARE(webView.grab().toImage().pixelColor(QPoint(150,150)), Qt::black); + webView.setPage(&page2); + QTRY_COMPARE(webView.grab().toImage().pixelColor(QPoint(150,150)), Qt::white); + webView.setPage(&page1); + QTRY_COMPARE(webView.grab().toImage().pixelColor(QPoint(150,150)), Qt::black); +} + QTEST_MAIN(tst_QWebEngineView) #include "tst_qwebengineview.moc" |