aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/popup
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-01-27 17:27:39 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-01-28 09:29:25 +0000
commit39af88a8da473afe039201164a4c2a7980f7c2f9 (patch)
tree7457eca707ac31e0522bcaf1530ae0064742935b /tests/auto/popup
parentde74c0ee3eab435f2a95849216129ac8e7043972 (diff)
Replace Popup::pressed|releasedOutside with close policy flags
Change-Id: I3e09c4e2b6cbbe39bdf9e943905664e5dc1fe954 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'tests/auto/popup')
-rw-r--r--tests/auto/popup/data/applicationwindow.qml27
-rw-r--r--tests/auto/popup/tst_popup.cpp60
2 files changed, 69 insertions, 18 deletions
diff --git a/tests/auto/popup/data/applicationwindow.qml b/tests/auto/popup/data/applicationwindow.qml
index 69cbf47f..34dbe7e8 100644
--- a/tests/auto/popup/data/applicationwindow.qml
+++ b/tests/auto/popup/data/applicationwindow.qml
@@ -46,19 +46,26 @@ ApplicationWindow {
height: 400
property alias popup: popup
+ property alias button: button
- Popup {
- id: popup
- x: (parent.width - width) / 2
- y: (parent.height - height) / 2
+ Button {
+ id: button
+ text: "Open"
+ anchors.centerIn: parent
+ anchors.verticalCenterOffset: -height
- Text {
- color: "white"
- text: "Hello, world!"
+ Popup {
+ id: popup
+ y: parent.height
- MouseArea {
- anchors.fill: parent
- onClicked: popup.close()
+ Text {
+ color: "white"
+ text: "Hello, world!"
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: popup.close()
+ }
}
}
}
diff --git a/tests/auto/popup/tst_popup.cpp b/tests/auto/popup/tst_popup.cpp
index df73c320..0b75b7f7 100644
--- a/tests/auto/popup/tst_popup.cpp
+++ b/tests/auto/popup/tst_popup.cpp
@@ -42,6 +42,7 @@
#include <QtLabsTemplates/private/qquickapplicationwindow_p.h>
#include <QtLabsTemplates/private/qquickoverlay_p.h>
#include <QtLabsTemplates/private/qquickpopup_p_p.h>
+#include <QtLabsTemplates/private/qquickbutton_p.h>
using namespace QQuickVisualTestUtil;
@@ -110,22 +111,27 @@ void tst_popup::overlay()
QQuickPopup *popup = helper.window->property("popup").value<QQuickPopup*>();
QVERIFY(popup);
+ QQuickButton *button = helper.window->property("button").value<QQuickButton*>();
+ QVERIFY(button);
+
popup->setModal(true);
popup->open();
QVERIFY(popup->isVisible());
- QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(popup->x() - 1, popup->y() - 1));
+ QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
QCOMPARE(overlayPressedSignal.count(), 2);
QCOMPARE(overlayReleasedSignal.count(), 0);
- QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(popup->x() - 1, popup->y() - 1));
+ QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
QCOMPARE(overlayPressedSignal.count(), 2);
QCOMPARE(overlayReleasedSignal.count(), 1);
- QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(popup->x() + popup->width() / 2, popup->y() + popup->height() / 2));
+ QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(button->x() + popup->x() + popup->width() / 2,
+ button->y() + popup->y() + popup->height() / 2));
QCOMPARE(overlayPressedSignal.count(), 2);
QCOMPARE(overlayReleasedSignal.count(), 1);
+
QVERIFY(!popup->isVisible());
}
@@ -139,7 +145,10 @@ void tst_popup::closePolicy_data()
QTest::newRow("NoAutoClose") << static_cast<QQuickPopup::ClosePolicy>(QQuickPopup::NoAutoClose);
QTest::newRow("OnPressOutside") << static_cast<QQuickPopup::ClosePolicy>(QQuickPopup::OnPressOutside);
+ QTest::newRow("OnPressOutsideParent") << static_cast<QQuickPopup::ClosePolicy>(QQuickPopup::OnPressOutsideParent);
+ QTest::newRow("OnPressOutside|Parent") << static_cast<QQuickPopup::ClosePolicy>(QQuickPopup::OnPressOutside | QQuickPopup::OnPressOutsideParent);
QTest::newRow("OnReleaseOutside") << static_cast<QQuickPopup::ClosePolicy>(QQuickPopup::OnReleaseOutside);
+ QTest::newRow("OnReleaseOutside|Parent") << static_cast<QQuickPopup::ClosePolicy>(QQuickPopup::OnReleaseOutside | QQuickPopup::OnReleaseOutsideParent);
QTest::newRow("OnEscape") << static_cast<QQuickPopup::ClosePolicy>(QQuickPopup::OnEscape);
}
@@ -156,6 +165,9 @@ void tst_popup::closePolicy()
QQuickPopup *popup = helper.window->property("popup").value<QQuickPopup*>();
QVERIFY(popup);
+ QQuickButton *button = helper.window->property("button").value<QQuickButton*>();
+ QVERIFY(button);
+
popup->setModal(true);
popup->setFocus(true);
popup->setClosePolicy(closePolicy);
@@ -163,20 +175,52 @@ void tst_popup::closePolicy()
popup->open();
QVERIFY(popup->isVisible());
- QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(popup->x() - 1, popup->y() - 1));
- QCOMPARE(popup->isVisible(), !closePolicy.testFlag(QQuickPopup::OnPressOutside));
+ // press outside popup and its parent
+ QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
+ if (closePolicy.testFlag(QQuickPopup::OnPressOutside) || closePolicy.testFlag(QQuickPopup::OnPressOutsideParent))
+ QVERIFY(!popup->isVisible());
+ else
+ QVERIFY(popup->isVisible());
+
+ popup->open();
+ QVERIFY(popup->isVisible());
+
+ // release outside popup and its parent
+ QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
+ if (closePolicy.testFlag(QQuickPopup::OnReleaseOutside))
+ QVERIFY(!popup->isVisible());
+ else
+ QVERIFY(popup->isVisible());
+
+ popup->open();
+ QVERIFY(popup->isVisible());
+
+ // press outside popup but inside its parent
+ QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(button->x(), button->y()));
+ if (closePolicy.testFlag(QQuickPopup::OnPressOutside) && !closePolicy.testFlag(QQuickPopup::OnPressOutsideParent))
+ QVERIFY(!popup->isVisible());
+ else
+ QVERIFY(popup->isVisible());
popup->open();
QVERIFY(popup->isVisible());
- QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(popup->x() - 1, popup->y() - 1));
- QCOMPARE(popup->isVisible(), !closePolicy.testFlag(QQuickPopup::OnReleaseOutside));
+ // release outside popup but inside its parent
+ QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(button->x(), button->y()));
+ if (closePolicy.testFlag(QQuickPopup::OnReleaseOutside) && !closePolicy.testFlag(QQuickPopup::OnReleaseOutsideParent))
+ QVERIFY(!popup->isVisible());
+ else
+ QVERIFY(popup->isVisible());
popup->open();
QVERIFY(popup->isVisible());
+ // escape
QTest::keyClick(window, Qt::Key_Escape);
- QCOMPARE(popup->isVisible(), !closePolicy.testFlag(QQuickPopup::OnEscape));
+ if (closePolicy.testFlag(QQuickPopup::OnEscape))
+ QVERIFY(!popup->isVisible());
+ else
+ QVERIFY(popup->isVisible());
}
QTEST_MAIN(tst_popup)