diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-04-26 10:35:00 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-04-26 15:53:36 +0000 |
commit | cf67bb976e082105994ff00a2616129833edb857 (patch) | |
tree | f3f2cf2d278a12f60e63e14a00d38cb455424013 /tests/auto/popup | |
parent | 927b1280bb33a240c33a54d8e72531ab606ac590 (diff) |
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 <mitch.curtis@qt.io>
Diffstat (limited to 'tests/auto/popup')
-rw-r--r-- | tests/auto/popup/tst_popup.cpp | 32 |
1 files changed, 28 insertions, 4 deletions
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<QString>("source"); - QTest::newRow("Window") << "window.qml"; - QTest::newRow("ApplicationWindow") << "applicationwindow.qml"; + QTest::addColumn<bool>("modal"); + QTest::addColumn<bool>("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() |