From cf67bb976e082105994ff00a2616129833edb857 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Wed, 26 Apr 2017 10:35:00 +0200 Subject: Popups: fix non-dimming modal background leaking events through This piece of code, which was thought unnecessary, went missing when moved from mousePressEvent() to handlePress() in 7faafa4. It is needed after all for non-dimming modal popups, because in that case we simply cannot rely on the background dimming blocking the press... Task-number: QTBUG-60405 Change-Id: I53d89133eeae4ad8531b3c1e07c3b22295d438de Reviewed-by: Mitch Curtis --- tests/auto/popup/tst_popup.cpp | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/auto/popup/tst_popup.cpp b/tests/auto/popup/tst_popup.cpp index a6de0c03..0e9b55f7 100644 --- a/tests/auto/popup/tst_popup.cpp +++ b/tests/auto/popup/tst_popup.cpp @@ -160,13 +160,26 @@ void tst_popup::state() void tst_popup::overlay_data() { QTest::addColumn("source"); - QTest::newRow("Window") << "window.qml"; - QTest::newRow("ApplicationWindow") << "applicationwindow.qml"; + QTest::addColumn("modal"); + QTest::addColumn("dim"); + + QTest::newRow("Window") << "window.qml" << false << false; + QTest::newRow("Window,dim") << "window.qml" << false << true; + QTest::newRow("Window,modal") << "window.qml" << true << false; + QTest::newRow("Window,modal,dim") << "window.qml" << true << true; + + QTest::newRow("ApplicationWindow") << "applicationwindow.qml" << false << false; + QTest::newRow("ApplicationWindow,dim") << "applicationwindow.qml" << false << true; + QTest::newRow("ApplicationWindow,modal") << "applicationwindow.qml" << true << false; + QTest::newRow("ApplicationWindow,modal,dim") << "applicationwindow.qml" << true << true; } void tst_popup::overlay() { QFETCH(QString, source); + QFETCH(bool, modal); + QFETCH(bool, dim); + QQuickApplicationHelper helper(this, source); QQuickWindow *window = helper.window; @@ -210,7 +223,8 @@ void tst_popup::overlay() QVERIFY(!popup->isVisible()); QVERIFY(!overlay->isVisible()); - popup->setModal(true); + popup->setDim(dim); + popup->setModal(modal); popup->setClosePolicy(QQuickPopup::CloseOnReleaseOutside); popup->open(); @@ -223,10 +237,20 @@ void tst_popup::overlay() QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1)); QCOMPARE(overlayPressedSignal.count(), 2); + + #define comment "Non-modal popups do not yet support CloseOnReleaseXxx" + #define QEXPECT_NON_MODAL_POPUP_FAILS() \ + QEXPECT_FAIL("Window", comment, Continue); \ + QEXPECT_FAIL("Window,dim", comment, Continue); \ + QEXPECT_FAIL("ApplicationWindow", comment, Continue); \ + QEXPECT_FAIL("ApplicationWindow,dim", comment, Continue); + + QEXPECT_NON_MODAL_POPUP_FAILS() QCOMPARE(overlayReleasedSignal.count(), 1); + QEXPECT_NON_MODAL_POPUP_FAILS() QVERIFY(!popup->isVisible()); - QVERIFY(!overlay->isVisible()); + QCOMPARE(overlay->isVisible(), popup->isVisible()); } void tst_popup::zOrder_data() -- cgit v1.2.3