diff options
author | Martin Jones <martin.jones@jollamobile.com> | 2014-07-11 14:10:49 +1000 |
---|---|---|
committer | Martin Jones <martin.jones@jollamobile.com> | 2014-07-16 07:54:58 +0200 |
commit | 112efda64ba24e7d9255a36065223e9800a50c21 (patch) | |
tree | c35446169d49b7ab4d4bf9a21b983cbc251206a5 /tests/auto | |
parent | 427bee6cb616d515ae04bc47193e35e19e1b519e (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.qml | 20 | ||||
-rw-r--r-- | tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp | 65 |
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" |