Skip to content

Commit

Permalink
touchUpdated should be called for release and cancel.
Browse files Browse the repository at this point in the history
touchUpdated should be emitted whenever the touch is updated, even if the
update means there are no longer any valid touch points.

Change-Id: Iceac5a65094784928108acc764bbc1d5c2b9a08a
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
  • Loading branch information
Michael Brasser authored and Qt by Nokia committed Dec 30, 2011
1 parent ae739f0 commit 017a82c
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 3 deletions.
5 changes: 3 additions & 2 deletions src/quick/items/qquickmultipointtoucharea.cpp
Expand Up @@ -281,7 +281,7 @@ void QQuickTouchPoint::setSceneY(qreal sceneY)
\qmlsignal QtQuick2::MultiPointTouchArea::touchUpdated(list<TouchPoint> touchPoints)
This handler is called when the touch points handled by the MultiPointTouchArea change. This includes adding new touch points,
removing previous touch points, as well as updating current touch point data. \a touchPoints is the list of all current touch
removing or canceling previous touch points, as well as updating current touch point data. \a touchPoints is the list of all current touch
points.
*/

Expand Down Expand Up @@ -480,7 +480,7 @@ void QQuickMultiPointTouchArea::updateTouchData(QEvent *event)
if (ended) emit touchPointsReleased(_releasedTouchPoints);
if (moved) emit touchPointsUpdated(_movedTouchPoints);
if (started) emit touchPointsPressed(_pressedTouchPoints);
if (!_touchPoints.isEmpty()) emit touchUpdated(_touchPoints.values());
if (ended || moved || started) emit touchUpdated(_touchPoints.values());
}
}

Expand Down Expand Up @@ -597,6 +597,7 @@ void QQuickMultiPointTouchArea::ungrab()
dtp->setInUse(false);
}
_touchPoints.clear();
emit touchUpdated(QList<QObject*>());
}
}

Expand Down
Expand Up @@ -7,6 +7,9 @@ Flickable {
contentWidth: width
contentHeight: height * 2

property int cancelCount: 0
property int touchCount: 0

MultiPointTouchArea {
anchors.fill: parent
minimumTouchPoints: 2
Expand All @@ -20,6 +23,9 @@ Flickable {
TouchPoint { id: point1; objectName: "point1" },
TouchPoint { id: point2; objectName: "point2" }
]

onTouchPointsCanceled: cancelCount = touchPoints.length
onTouchUpdated: touchCount = touchPoints.length
}
}

Expand Up @@ -9,17 +9,22 @@ MultiPointTouchArea {
touchPointUpdateCount = 0;
touchPointReleaseCount = 0;
touchCount = 0;
touchUpdatedHandled = false;
}

property int touchPointPressCount: 0
property int touchPointUpdateCount: 0
property int touchPointReleaseCount: 0
property int touchCount: 0
property bool touchUpdatedHandled: false

maximumTouchPoints: 5

onTouchPointsPressed: { touchPointPressCount = touchPoints.length }
onTouchPointsUpdated: { touchPointUpdateCount = touchPoints.length }
onTouchPointsReleased: { touchPointReleaseCount = touchPoints.length }
onTouchUpdated: { touchCount = touchPoints.length }
onTouchUpdated: {
touchCount = touchPoints.length
touchUpdatedHandled = true
}
}
Expand Up @@ -149,6 +149,7 @@ void tst_QQuickMultiPointTouchArea::signalTest()
QCOMPARE(area->property("touchPointUpdateCount").toInt(), 0);
QCOMPARE(area->property("touchPointReleaseCount").toInt(), 3);
QCOMPARE(area->property("touchCount").toInt(), 0);
QCOMPARE(area->property("touchUpdatedHandled").toBool(), true);
QMetaObject::invokeMethod(area, "clearCounts");

delete canvas;
Expand Down Expand Up @@ -600,6 +601,8 @@ void tst_QQuickMultiPointTouchArea::inFlickable()

QCOMPARE(point11->pressed(), true);
QCOMPARE(point12->pressed(), true);
QCOMPARE(flickable->property("cancelCount").toInt(), 0);
QCOMPARE(flickable->property("touchCount").toInt(), 2);

p1 += QPoint(0,15); p2 += QPoint(0,15);
QTest::touchEvent(canvas, device).move(0, p1).move(1, p2);
Expand All @@ -620,6 +623,8 @@ void tst_QQuickMultiPointTouchArea::inFlickable()
QVERIFY(flickable->contentY() < 0);
QCOMPARE(point11->pressed(), false);
QCOMPARE(point12->pressed(), false);
QCOMPARE(flickable->property("cancelCount").toInt(), 2);
QCOMPARE(flickable->property("touchCount").toInt(), 0);

QTest::touchEvent(canvas, device).release(0, p1).release(1, p2);
QTest::mouseRelease(canvas,Qt::LeftButton, 0, p1);
Expand Down

0 comments on commit 017a82c

Please sign in to comment.