summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>2010-09-22 17:01:08 +0200
committerFrederik Gladhorn <frederik.gladhorn@nokia.com>2010-09-27 13:15:53 +0200
commitfab304e64769b75b80bfdee86499fca076412997 (patch)
tree8c32b362d61204dd175dbed87de80a0c1ce5eced
parentf0a5fd33091a989e48a3329c40224cdad42fa355 (diff)
Make TapAndHold recognizer work with QGraphicsItem
-rw-r--r--qdeclarativegesturerecognizers.cpp59
1 files changed, 33 insertions, 26 deletions
diff --git a/qdeclarativegesturerecognizers.cpp b/qdeclarativegesturerecognizers.cpp
index 9d9aeaf..6e5d3af 100644
--- a/qdeclarativegesturerecognizers.cpp
+++ b/qdeclarativegesturerecognizers.cpp
@@ -714,11 +714,6 @@ QGestureRecognizer::Result QTapGestureRecognizer::recognize(QGesture *state,
QObject * target,
QEvent *event)
{
-// if (target) {
-// qDebug() << "QTapGestureRecognizer::recognize";
-// target->dumpObjectInfo();
-// }
-
QTapGesture *q = static_cast<QTapGesture *>(state);
QGestureRecognizer::Result result = QGestureRecognizer::CancelGesture;
@@ -854,30 +849,36 @@ QTapAndHoldGestureRecognizer::recognize(QGesture *state, QObject *object,
}
const QTouchEvent *ev = static_cast<const QTouchEvent *>(event);
-// const QMouseEvent *me = static_cast<const QMouseEvent *>(event);
+ //const QMouseEvent *me = static_cast<const QMouseEvent *>(event);
+
#ifndef QT_NO_GRAPHICSVIEW
- const QMouseEvent *gsme = static_cast<const QMouseEvent *>(event);
+ const QGraphicsSceneMouseEvent *gsme = static_cast<const QGraphicsSceneMouseEvent *>(event);
#endif
enum { TapRadius = 40 };
switch (event->type()) {
#ifndef QT_NO_GRAPHICSVIEW
- case QEvent::MouseButtonPress:
- q->setPosition(gsme->globalPos());
+ case QEvent::GraphicsSceneMousePress:
+ qDebug() << "got GraphicsSceneMousePress in tap and hold";
+
+ q->setPosition(gsme->screenPos());
q->setHotSpot(q->position());
if (q->property("timerId").toInt())
q->killTimer(q->property("timerId").toInt());
q->setProperty("timerId",q->startTimer(q->timeout()));
return QGestureRecognizer::MayBeGesture; // we don't show a sign of life until the timeout
#endif
-// case QEvent::MouseButtonPress:
-// d->position = me->globalPos();
-// q->setHotSpot(d->position);
-// if (q->property("timerId").toInt())
-// q->killTimer(q->property("timerId").toInt());
-// q->setProperty("timerId",q->startTimer(QTapAndHoldGesturePrivate::Timeout));
-// return QGestureRecognizer::MayBeGesture; // we don't show a sign of life until the timeout
+
+ case QEvent::MouseButtonPress: {
+ QMouseEvent *ev = static_cast<QMouseEvent *>(event);
+ q->setPosition(ev->globalPos());
+ q->setHotSpot(q->position());
+ if (q->property("timerId").toInt())
+ q->killTimer(q->property("timerId").toInt());
+ q->setProperty("timerId",q->startTimer(q->startTimer(q->timeout())));
+ return QGestureRecognizer::MayBeGesture; // we don't show a sign of life until the timeout
+ }
case QEvent::TouchBegin:
q->setPosition(ev->touchPoints().at(0).startScreenPos());
q->setHotSpot(q->position());
@@ -885,11 +886,13 @@ QTapAndHoldGestureRecognizer::recognize(QGesture *state, QObject *object,
q->killTimer(q->property("timerId").toInt());
q->setProperty("timerId",q->startTimer(q->timeout()));
return QGestureRecognizer::MayBeGesture; // we don't show a sign of life until the timeout
+
#ifndef QT_NO_GRAPHICSVIEW
- case QEvent::MouseButtonRelease:
+ case QEvent::GraphicsSceneMouseRelease:
#endif
-// case QEvent::MouseButtonRelease:
+ case QEvent::MouseButtonRelease:
case QEvent::TouchEnd:
+ qDebug() << "cancel tap and hold.";
return QGestureRecognizer::CancelGesture; // get out of the MayBeGesture state
case QEvent::TouchUpdate:
if (q->property("timerId").toInt() && ev->touchPoints().size() == 1) {
@@ -899,15 +902,16 @@ QTapAndHoldGestureRecognizer::recognize(QGesture *state, QObject *object,
return QGestureRecognizer::MayBeGesture;
}
return QGestureRecognizer::CancelGesture;
-// case QEvent::MouseMove: {
-// QPoint delta = me->globalPos() - d->position.toPoint();
-// if (q->property("timerId").toInt() && delta.manhattanLength() <= TapRadius)
-// return QGestureRecognizer::MayBeGesture;
-// return QGestureRecognizer::CancelGesture;
-// }
-#ifndef QT_NO_GRAPHICSVIEW
case QEvent::MouseMove: {
- QPoint delta = gsme->globalPos() - q->position().toPoint();
+ QMouseEvent *ev = static_cast<QMouseEvent *>(event);
+ QPoint delta = ev->globalPos() - q->position().toPoint();
+ if (q->property("timerId").toInt() && delta.manhattanLength() <= TapRadius)
+ return QGestureRecognizer::MayBeGesture;
+ return QGestureRecognizer::CancelGesture;
+ }
+#ifndef QT_NO_GRAPHICSVIEW
+ case QEvent::GraphicsSceneMouseMove: {
+ QPoint delta = gsme->screenPos() - q->position().toPoint();
if (q->property("timerId").toInt() && delta.manhattanLength() <= TapRadius)
return QGestureRecognizer::MayBeGesture;
return QGestureRecognizer::CancelGesture;
@@ -922,6 +926,9 @@ void QTapAndHoldGestureRecognizer::reset(QGesture *state)
{
if (!state)
return;
+
+ qDebug() << "reset tap and hold";
+
QTapAndHoldGesture *q = static_cast<QTapAndHoldGesture *>(state);
q->setPosition(QPointF());