aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@jollamobile.com>2014-07-11 14:10:49 +1000
committerMartin Jones <martin.jones@jollamobile.com>2014-07-16 07:54:58 +0200
commit112efda64ba24e7d9255a36065223e9800a50c21 (patch)
treec35446169d49b7ab4d4bf9a21b983cbc251206a5 /tests/auto
parent427bee6cb616d515ae04bc47193e35e19e1b519e (diff)
Add containsPress property to MouseArea
It is very common to use pressed and containsMouse properties together to highlight a pressed item, e.g. property bool highlighted: pressed && containsMouse The containsPress property allows simplification and optimization of user code. [ChangeLog][QtQuick] Add containsPress property to MouseArea Task-number: QTBUG-40130 Change-Id: Ie286d431154eb37a99e57e4cf881d68d7cbbe31d Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/quick/qquickmousearea/data/containsPress.qml20
-rw-r--r--tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp65
2 files changed, 85 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickmousearea/data/containsPress.qml b/tests/auto/quick/qquickmousearea/data/containsPress.qml
new file mode 100644
index 0000000000..367c73c175
--- /dev/null
+++ b/tests/auto/quick/qquickmousearea/data/containsPress.qml
@@ -0,0 +1,20 @@
+import QtQuick 2.4
+
+Item {
+ width: 500
+ height: 500
+
+ Rectangle {
+ width: 300
+ height: 300
+ color: mouseArea.containsPress ? "red" : "grey"
+ x: 100
+ y: 100
+
+ MouseArea {
+ id: mouseArea
+ objectName: "mouseArea"
+ anchors.fill: parent
+ }
+ }
+}
diff --git a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
index ee29ed2075..75497a4b5f 100644
--- a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
+++ b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
@@ -123,6 +123,8 @@ private slots:
void moveAndReleaseWithoutPress();
void nestedStopAtBounds();
void nestedStopAtBounds_data();
+ void containsPress_data();
+ void containsPress();
private:
void acceptedButton_data();
@@ -1684,6 +1686,69 @@ void tst_QQuickMouseArea::nestedStopAtBounds()
QTest::mouseRelease(&view, Qt::LeftButton, 0, position);
}
+void tst_QQuickMouseArea::containsPress_data()
+{
+ QTest::addColumn<bool>("hoverEnabled");
+
+ QTest::newRow("hover enabled") << true;
+ QTest::newRow("hover disaabled") << false;
+}
+
+void tst_QQuickMouseArea::containsPress()
+{
+ QFETCH(bool, hoverEnabled);
+
+ QQuickView window;
+ QByteArray errorMessage;
+ QVERIFY2(initView(window, testFileUrl("containsPress.qml"), true, &errorMessage), errorMessage.constData());
+ window.show();
+ window.requestActivate();
+ QVERIFY(QTest::qWaitForWindowExposed(&window));
+ QQuickItem *root = window.rootObject();
+ QVERIFY(root != 0);
+
+ QQuickMouseArea *mouseArea = window.rootObject()->findChild<QQuickMouseArea*>("mouseArea");
+ QVERIFY(mouseArea != 0);
+
+ QSignalSpy containsPressSpy(mouseArea, SIGNAL(containsPressChanged()));
+
+ mouseArea->setHoverEnabled(hoverEnabled);
+
+ QTest::mouseMove(&window, QPoint(22,33));
+ QCOMPARE(mouseArea->hovered(), false);
+ QCOMPARE(mouseArea->pressed(), false);
+ QCOMPARE(mouseArea->containsPress(), false);
+
+ QTest::mouseMove(&window, QPoint(200,200));
+ QCOMPARE(mouseArea->hovered(), hoverEnabled);
+ QCOMPARE(mouseArea->pressed(), false);
+ QCOMPARE(mouseArea->containsPress(), false);
+
+ QTest::mousePress(&window, Qt::LeftButton, Qt::NoModifier, QPoint(200,200));
+ QCOMPARE(mouseArea->hovered(), true);
+ QTRY_COMPARE(mouseArea->pressed(), true);
+ QCOMPARE(mouseArea->containsPress(), true);
+ QCOMPARE(containsPressSpy.count(), 1);
+
+ QTest::mouseMove(&window, QPoint(22,33));
+ QCOMPARE(mouseArea->hovered(), false);
+ QCOMPARE(mouseArea->pressed(), true);
+ QCOMPARE(mouseArea->containsPress(), false);
+ QCOMPARE(containsPressSpy.count(), 2);
+
+ QTest::mouseMove(&window, QPoint(200,200));
+ QCOMPARE(mouseArea->hovered(), true);
+ QCOMPARE(mouseArea->pressed(), true);
+ QCOMPARE(mouseArea->containsPress(), true);
+ QCOMPARE(containsPressSpy.count(), 3);
+
+ QTest::mouseRelease(&window, Qt::LeftButton, Qt::NoModifier, QPoint(200,200));
+ QCOMPARE(mouseArea->hovered(), hoverEnabled);
+ QCOMPARE(mouseArea->pressed(), false);
+ QCOMPARE(mouseArea->containsPress(), false);
+ QCOMPARE(containsPressSpy.count(), 4);
+}
+
QTEST_MAIN(tst_QQuickMouseArea)
#include "tst_qquickmousearea.moc"