void properties();
void signalTest();
+ void release();
+ void reuse();
void nonOverlapping();
void nested();
void inFlickable();
delete canvas;
}
+void tst_QQuickMultiPointTouchArea::release()
+{
+ QQuickView *canvas = createAndShowView("basic.qml");
+ QVERIFY(canvas->rootObject() != 0);
+
+ QQuickTouchPoint *point1 = canvas->rootObject()->findChild<QQuickTouchPoint*>("point1");
+
+ QCOMPARE(point1->pressed(), false);
+
+ QPoint p1(20,100);
+
+ QTest::QTouchEventSequence sequence = QTest::touchEvent(canvas, device);
+
+ sequence.press(0, p1).commit();
+
+ QCOMPARE(point1->pressed(), true);
+
+ p1 += QPoint(0,10);
+
+ sequence.move(0, p1).commit();
+
+ QCOMPARE(point1->pressed(), true);
+ QCOMPARE(point1->x(), qreal(20)); QCOMPARE(point1->y(), qreal(110));
+
+ p1 += QPoint(4,10);
+
+ sequence.release(0, p1).commit();
+
+ //test that a release without a prior move to the release position successfully updates the point's position
+ QCOMPARE(point1->pressed(), false);
+ QCOMPARE(point1->x(), qreal(24)); QCOMPARE(point1->y(), qreal(120));
+
+ delete canvas;
+}
+
+void tst_QQuickMultiPointTouchArea::reuse()
+{
+ QQuickView *canvas = createAndShowView("basic.qml");
+ QVERIFY(canvas->rootObject() != 0);
+
+ QQuickTouchPoint *point1 = canvas->rootObject()->findChild<QQuickTouchPoint*>("point1");
+ QQuickTouchPoint *point2 = canvas->rootObject()->findChild<QQuickTouchPoint*>("point2");
+ QQuickTouchPoint *point3 = canvas->rootObject()->findChild<QQuickTouchPoint*>("point3");
+
+ QCOMPARE(point1->pressed(), false);
+ QCOMPARE(point2->pressed(), false);
+
+ QPoint p1(20,100);
+ QPoint p2(40,100);
+ QPoint p3(60,100);
+ QPoint p4(80,100);
+
+ QTest::QTouchEventSequence sequence = QTest::touchEvent(canvas, device);
+
+ sequence.press(0, p1).press(1, p2).commit();
+
+ QCOMPARE(point1->pressed(), true);
+ QCOMPARE(point2->pressed(), true);
+ QCOMPARE(point3->pressed(), false);
+
+ sequence.release(0, p1).stationary(1).press(2, p3).commit();
+
+ //we shouldn't reuse point 1 yet
+ QCOMPARE(point1->pressed(), false);
+ QCOMPARE(point2->pressed(), true);
+ QCOMPARE(point3->pressed(), true);
+
+ //back to base state (no touches)
+ sequence.release(1, p2).release(2, p3).commit();
+
+ QCOMPARE(point1->pressed(), false);
+ QCOMPARE(point2->pressed(), false);
+ QCOMPARE(point3->pressed(), false);
+
+ sequence.press(0, p1).press(1, p2).commit();
+
+ QCOMPARE(point1->pressed(), true);
+ QCOMPARE(point2->pressed(), true);
+ QCOMPARE(point3->pressed(), false);
+
+ sequence.release(0, p1).stationary(1).commit();
+
+ QCOMPARE(point1->pressed(), false);
+ QCOMPARE(point2->pressed(), true);
+ QCOMPARE(point3->pressed(), false);
+
+ sequence.press(4, p4).stationary(1).commit();
+
+ //the new touch point should reuse point 1
+ QCOMPARE(point1->pressed(), true);
+ QCOMPARE(point2->pressed(), true);
+ QCOMPARE(point3->pressed(), false);
+
+ QCOMPARE(point1->x(), qreal(80)); QCOMPARE(point1->y(), qreal(100));
+
+ delete canvas;
+}
+
void tst_QQuickMultiPointTouchArea::nonOverlapping()
{
QQuickView *canvas = createAndShowView("nonOverlapping.qml");
QQuickTouchPoint *point22 = canvas->rootObject()->findChild<QQuickTouchPoint*>("point22");
QQuickTouchPoint *point23 = canvas->rootObject()->findChild<QQuickTouchPoint*>("point23");
- QCOMPARE(point11->isValid(), false);
- QCOMPARE(point12->isValid(), false);
- QCOMPARE(point21->isValid(), false);
- QCOMPARE(point22->isValid(), false);
- QCOMPARE(point23->isValid(), false);
+ QCOMPARE(point11->pressed(), false);
+ QCOMPARE(point12->pressed(), false);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
QPoint p1(20,100);
QPoint p2(40,100);
sequence.press(0, p1).commit();
- QCOMPARE(point11->isValid(), false);
- QCOMPARE(point12->isValid(), false);
- QCOMPARE(point21->isValid(), false);
- QCOMPARE(point22->isValid(), false);
- QCOMPARE(point23->isValid(), false);
+ QCOMPARE(point11->pressed(), false);
+ QCOMPARE(point12->pressed(), false);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
sequence.stationary(0).press(1, p2).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), false);
- QCOMPARE(point22->isValid(), false);
- QCOMPARE(point23->isValid(), false);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
QCOMPARE(point11->x(), qreal(20)); QCOMPARE(point11->y(), qreal(100));
QCOMPARE(point12->x(), qreal(40)); QCOMPARE(point12->y(), qreal(100));
p2 += QPoint(5,0);
sequence.move(0, p1).move(1, p2).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), false);
- QCOMPARE(point22->isValid(), false);
- QCOMPARE(point23->isValid(), false);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
QCOMPARE(point11->x(), qreal(20)); QCOMPARE(point11->y(), qreal(110));
QCOMPARE(point12->x(), qreal(45)); QCOMPARE(point12->y(), qreal(100));
sequence.stationary(0).stationary(1).press(2, p3).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), false);
- QCOMPARE(point22->isValid(), false);
- QCOMPARE(point23->isValid(), false);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
sequence.stationary(0).stationary(1).stationary(2).press(3, p4).press(4, p5).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), true);
- QCOMPARE(point22->isValid(), true);
- QCOMPARE(point23->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), true);
+ QCOMPARE(point22->pressed(), true);
+ QCOMPARE(point23->pressed(), true);
QCOMPARE(point11->x(), qreal(20)); QCOMPARE(point11->y(), qreal(110));
QCOMPARE(point12->x(), qreal(45)); QCOMPARE(point12->y(), qreal(100));
p5 += QPoint(-7,10);
sequence.move(0, p1).move(1, p2).move(2, p3).move(3, p4).move(4, p5).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), true);
- QCOMPARE(point22->isValid(), true);
- QCOMPARE(point23->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), true);
+ QCOMPARE(point22->pressed(), true);
+ QCOMPARE(point23->pressed(), true);
QCOMPARE(point11->x(), qreal(24)); QCOMPARE(point11->y(), qreal(120));
QCOMPARE(point12->x(), qreal(62)); QCOMPARE(point12->y(), qreal(117));
sequence.release(0, p1).release(1, p2).release(2, p3).release(3, p4).release(4, p5).commit();
- //points remain valid immediately after release
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), true);
- QCOMPARE(point22->isValid(), true);
- QCOMPARE(point23->isValid(), true);
+ QCOMPARE(point11->pressed(), false);
+ QCOMPARE(point12->pressed(), false);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
delete canvas;
}
QQuickTouchPoint *point22 = canvas->rootObject()->findChild<QQuickTouchPoint*>("point22");
QQuickTouchPoint *point23 = canvas->rootObject()->findChild<QQuickTouchPoint*>("point23");
- QCOMPARE(point11->isValid(), false);
- QCOMPARE(point12->isValid(), false);
- QCOMPARE(point21->isValid(), false);
- QCOMPARE(point22->isValid(), false);
- QCOMPARE(point23->isValid(), false);
+ QCOMPARE(point11->pressed(), false);
+ QCOMPARE(point12->pressed(), false);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
QPoint p1(20,100);
QPoint p2(40,100);
sequence.press(0, p1).commit();
- QCOMPARE(point11->isValid(), false);
- QCOMPARE(point12->isValid(), false);
- QCOMPARE(point21->isValid(), false);
- QCOMPARE(point22->isValid(), false);
- QCOMPARE(point23->isValid(), false);
+ QCOMPARE(point11->pressed(), false);
+ QCOMPARE(point12->pressed(), false);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
sequence.stationary(0).press(1, p2).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), false);
- QCOMPARE(point22->isValid(), false);
- QCOMPARE(point23->isValid(), false);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
QCOMPARE(point11->x(), qreal(20)); QCOMPARE(point11->y(), qreal(100));
QCOMPARE(point12->x(), qreal(40)); QCOMPARE(point12->y(), qreal(100));
p2 += QPoint(5,0);
sequence.move(0, p1).move(1, p2).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), false);
- QCOMPARE(point22->isValid(), false);
- QCOMPARE(point23->isValid(), false);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
QCOMPARE(point11->x(), qreal(20)); QCOMPARE(point11->y(), qreal(110));
QCOMPARE(point12->x(), qreal(45)); QCOMPARE(point12->y(), qreal(100));
sequence.stationary(0).stationary(1).press(2, p3).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), true);
- QCOMPARE(point22->isValid(), true);
- QCOMPARE(point23->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), true);
+ QCOMPARE(point22->pressed(), true);
+ QCOMPARE(point23->pressed(), true);
//point11 should be same as point21, point12 same as point22
QCOMPARE(point11->x(), qreal(20)); QCOMPARE(point11->y(), qreal(110));
sequence.stationary(0).stationary(1).stationary(2).press(3, QPoint(80,180)).press(4, QPoint(100,180)).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), true);
- QCOMPARE(point22->isValid(), true);
- QCOMPARE(point23->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), true);
+ QCOMPARE(point22->pressed(), true);
+ QCOMPARE(point23->pressed(), true);
//new touch points should be ignored (have no impact on our existing touch points)
QCOMPARE(point11->x(), qreal(20)); QCOMPARE(point11->y(), qreal(110));
p3 += QPoint(3,0);
sequence.move(0, p1).move(1, p2).move(2, p3).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), true);
- QCOMPARE(point22->isValid(), true);
- QCOMPARE(point23->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), true);
+ QCOMPARE(point22->pressed(), true);
+ QCOMPARE(point23->pressed(), true);
QCOMPARE(point21->x(), qreal(24)); QCOMPARE(point21->y(), qreal(120));
QCOMPARE(point22->x(), qreal(62)); QCOMPARE(point22->y(), qreal(117));
p3 += QPoint(3,0);
sequence.move(0, p1).move(1, p2).move(2, p3).commit();
- QCOMPARE(point11->isValid(), false);
- QCOMPARE(point12->isValid(), false);
- QCOMPARE(point21->isValid(), true);
- QCOMPARE(point22->isValid(), true);
- QCOMPARE(point23->isValid(), true);
+ QCOMPARE(point11->pressed(), false);
+ QCOMPARE(point12->pressed(), false);
+ QCOMPARE(point21->pressed(), true);
+ QCOMPARE(point22->pressed(), true);
+ QCOMPARE(point23->pressed(), true);
//first two remain the same (touches now grabbed by inner touch area)
QCOMPARE(point11->x(), qreal(24)); QCOMPARE(point11->y(), qreal(120));
sequence.press(0, p1).commit();
- QCOMPARE(point11->isValid(), false);
- QCOMPARE(point12->isValid(), false);
- QCOMPARE(point21->isValid(), false);
- QCOMPARE(point22->isValid(), false);
- QCOMPARE(point23->isValid(), false);
+ QCOMPARE(point11->pressed(), false);
+ QCOMPARE(point12->pressed(), false);
+ QCOMPARE(point21->pressed(), false);
+ QCOMPARE(point22->pressed(), false);
+ QCOMPARE(point23->pressed(), false);
sequence.release(0, p1).commit();
sequence.press(0, p1).press(1, p2).press(2, p3).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), true);
- QCOMPARE(point22->isValid(), true);
- QCOMPARE(point23->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), true);
+ QCOMPARE(point22->pressed(), true);
+ QCOMPARE(point23->pressed(), true);
p1 -= QPoint(4,10);
p2 -= QPoint(17,17);
p3 -= QPoint(3,0);
sequence.move(0, p1).move(1, p2).move(2, p3).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), true);
- QCOMPARE(point22->isValid(), true);
- QCOMPARE(point23->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), true);
+ QCOMPARE(point22->pressed(), true);
+ QCOMPARE(point23->pressed(), true);
QCOMPARE(point21->x(), qreal(24)); QCOMPARE(point21->y(), qreal(120));
QCOMPARE(point22->x(), qreal(62)); QCOMPARE(point22->y(), qreal(117));
p3 -= QPoint(3,0);
sequence.move(0, p1).move(1, p2).move(2, p3).commit();
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
- QCOMPARE(point21->isValid(), true);
- QCOMPARE(point22->isValid(), true);
- QCOMPARE(point23->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
+ QCOMPARE(point21->pressed(), true);
+ QCOMPARE(point22->pressed(), true);
+ QCOMPARE(point23->pressed(), true);
//all change (touches not grabbed by inner touch area)
QCOMPARE(point11->x(), qreal(20)); QCOMPARE(point11->y(), qreal(110));
QQuickTouchPoint *point11 = canvas->rootObject()->findChild<QQuickTouchPoint*>("point1");
QQuickTouchPoint *point12 = canvas->rootObject()->findChild<QQuickTouchPoint*>("point2");
- QCOMPARE(point11->isValid(), false);
- QCOMPARE(point12->isValid(), false);
+ QCOMPARE(point11->pressed(), false);
+ QCOMPARE(point12->pressed(), false);
QPoint p1(20,100);
QPoint p2(40,100);
QTest::mouseMove(canvas, p1);
QVERIFY(flickable->contentY() < 0);
- QCOMPARE(point11->isValid(), false);
- QCOMPARE(point12->isValid(), false);
+ QCOMPARE(point11->pressed(), false);
+ QCOMPARE(point12->pressed(), false);
QTest::touchEvent(canvas, device).release(0, p1);
QTest::mouseRelease(canvas,Qt::LeftButton, 0, p1);
QTest::touchEvent(canvas, device).press(0, p1).press(1, p2);
QTest::mousePress(canvas, Qt::LeftButton, 0, p1);
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
p1 += QPoint(0,15); p2 += QPoint(0,15);
QTest::touchEvent(canvas, device).move(0, p1).move(1, p2);
QTest::mouseMove(canvas, p1);
QVERIFY(flickable->contentY() < 0);
- QCOMPARE(point11->isValid(), false);
- QCOMPARE(point12->isValid(), false);
+ QCOMPARE(point11->pressed(), false);
+ QCOMPARE(point12->pressed(), false);
QTest::touchEvent(canvas, device).release(0, p1).release(1, p2);
QTest::mouseRelease(canvas,Qt::LeftButton, 0, p1);
QTest::touchEvent(canvas, device).press(0, p1).press(1, p2);
QTest::mousePress(canvas, Qt::LeftButton, 0, p1);
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
p1 += QPoint(15,0); p2 += QPoint(15,0);
QTest::touchEvent(canvas, device).move(0, p1).move(1, p2);
QTest::mouseMove(canvas, p1);
QVERIFY(flickable->contentY() == 0);
- QCOMPARE(point11->isValid(), true);
- QCOMPARE(point12->isValid(), true);
+ QCOMPARE(point11->pressed(), true);
+ QCOMPARE(point12->pressed(), true);
QTest::touchEvent(canvas, device).release(0, p1).release(1, p2);
QTest::mouseRelease(canvas,Qt::LeftButton, 0, p1);