diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-04-27 15:29:53 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-04-27 18:44:08 +0000 |
commit | 09b9a551c8eadc4e406468af09b44c14ea6c7b7f (patch) | |
tree | 64836931a529019e2a1dfa488d71e134bae840ee /tests/auto/popup | |
parent | f9552a96a7c6f8ea58d8ea90cf3027cc0636bf64 (diff) |
Fix Popup.CloseOnRelease for non-modal popups
Change-Id: I70ac251a02a7856e6770cdb9b3e5b2a2d027d133
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'tests/auto/popup')
-rw-r--r-- | tests/auto/popup/tst_popup.cpp | 56 |
1 files changed, 40 insertions, 16 deletions
diff --git a/tests/auto/popup/tst_popup.cpp b/tests/auto/popup/tst_popup.cpp index 0e9b55f7..686a5923 100644 --- a/tests/auto/popup/tst_popup.cpp +++ b/tests/auto/popup/tst_popup.cpp @@ -39,6 +39,7 @@ #include "../shared/util.h" #include "../shared/visualtestutil.h" +#include <QtGui/qpa/qwindowsysteminterface.h> #include <QtQuickTemplates2/private/qquickapplicationwindow_p.h> #include <QtQuickTemplates2/private/qquickoverlay_p.h> #include <QtQuickTemplates2/private/qquickpopup_p.h> @@ -207,17 +208,20 @@ void tst_popup::overlay() QQuickButton *button = window->property("button").value<QQuickButton*>(); QVERIFY(button); + int overlayPressCount = 0; + int overlayReleaseCount = 0; + popup->open(); QVERIFY(popup->isVisible()); QVERIFY(overlay->isVisible()); QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1)); - QCOMPARE(overlayPressedSignal.count(), 1); - QCOMPARE(overlayReleasedSignal.count(), 0); + QCOMPARE(overlayPressedSignal.count(), ++overlayPressCount); + QCOMPARE(overlayReleasedSignal.count(), overlayReleaseCount); QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1)); - QCOMPARE(overlayPressedSignal.count(), 1); - QCOMPARE(overlayReleasedSignal.count(), 0); // no modal-popups open + QCOMPARE(overlayPressedSignal.count(), overlayPressCount); + QCOMPARE(overlayReleasedSignal.count(), overlayReleaseCount); // no modal-popups open popup->close(); QVERIFY(!popup->isVisible()); @@ -227,28 +231,48 @@ void tst_popup::overlay() popup->setModal(modal); popup->setClosePolicy(QQuickPopup::CloseOnReleaseOutside); + // mouse popup->open(); QVERIFY(popup->isVisible()); QVERIFY(overlay->isVisible()); QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1)); - QCOMPARE(overlayPressedSignal.count(), 2); - QCOMPARE(overlayReleasedSignal.count(), 0); + QCOMPARE(overlayPressedSignal.count(), ++overlayPressCount); + QCOMPARE(overlayReleasedSignal.count(), overlayReleaseCount); QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1)); - QCOMPARE(overlayPressedSignal.count(), 2); + QCOMPARE(overlayPressedSignal.count(), overlayPressCount); + QCOMPARE(overlayReleasedSignal.count(), ++overlayReleaseCount); + + QVERIFY(!popup->isVisible()); + QCOMPARE(overlay->isVisible(), popup->isVisible()); + + // touch + popup->open(); + QVERIFY(popup->isVisible()); + QVERIFY(overlay->isVisible()); + + struct TouchDeviceDeleter + { + static inline void cleanup(QTouchDevice *device) + { + QWindowSystemInterface::unregisterTouchDevice(device); + delete device; + } + }; + + QScopedPointer<QTouchDevice, TouchDeviceDeleter> device(new QTouchDevice); + device->setType(QTouchDevice::TouchScreen); + QWindowSystemInterface::registerTouchDevice(device.data()); - #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); + QTest::touchEvent(window, device.data()).press(0, QPoint(1, 1)); + QCOMPARE(overlayPressedSignal.count(), ++overlayPressCount); + QCOMPARE(overlayReleasedSignal.count(), overlayReleaseCount); - QEXPECT_NON_MODAL_POPUP_FAILS() - QCOMPARE(overlayReleasedSignal.count(), 1); + QTest::touchEvent(window, device.data()).release(0, QPoint(1, 1)); + QCOMPARE(overlayPressedSignal.count(), overlayPressCount); + QCOMPARE(overlayReleasedSignal.count(), ++overlayReleaseCount); - QEXPECT_NON_MODAL_POPUP_FAILS() QVERIFY(!popup->isVisible()); QCOMPARE(overlay->isVisible(), popup->isVisible()); } |