aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/popup
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-04-27 15:29:53 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-04-27 18:44:08 +0000
commit09b9a551c8eadc4e406468af09b44c14ea6c7b7f (patch)
tree64836931a529019e2a1dfa488d71e134bae840ee /tests/auto/popup
parentf9552a96a7c6f8ea58d8ea90cf3027cc0636bf64 (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.cpp56
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());
}