summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>2010-09-22 15:08:29 +0200
committerFrederik Gladhorn <frederik.gladhorn@nokia.com>2010-09-27 13:13:39 +0200
commitf0a5fd33091a989e48a3329c40224cdad42fa355 (patch)
treee9c61350af79c35ed254e6bd6606303bf94f2cf6
parent59c57c0e2994d0851006280a3df92b0408e224b9 (diff)
Gesture events will be delivered to QGraphicsItems
Refactoring gestures to have a working event delivery to QGraphicsItem needs the recognizers to accept graphics mouse events.
-rw-r--r--gestures.pro4
-rw-r--r--qdeclarativegesturearea.cpp7
-rw-r--r--qdeclarativegesturerecognizers.cpp66
3 files changed, 47 insertions, 30 deletions
diff --git a/gestures.pro b/gestures.pro
index 2da157d..0efabbe 100644
--- a/gestures.pro
+++ b/gestures.pro
@@ -15,7 +15,9 @@ HEADERS += qdeclarativegesturearea_p.h \
qdeclarativegesturerecognizers_p.h
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/$$TARGETPATH
-else:DESTDIR = .
+
+#else:DESTDIR = .
+
target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
qmldir.files += $$PWD/qmldir
diff --git a/qdeclarativegesturearea.cpp b/qdeclarativegesturearea.cpp
index c5f621f..fafc574 100644
--- a/qdeclarativegesturearea.cpp
+++ b/qdeclarativegesturearea.cpp
@@ -197,6 +197,8 @@ QDeclarativeGestureArea::QDeclarativeGestureArea(QDeclarativeItem *parent) :
{
setAcceptedMouseButtons(Qt::LeftButton);
setAcceptTouchEvents(true);
+
+ //qDebug() << "create plugin gesture area";
}
QDeclarativeGestureArea::~QDeclarativeGestureArea()
@@ -218,8 +220,9 @@ bool QDeclarativeGestureArea::sceneEvent(QEvent *event)
case QEvent::GraphicsSceneMousePress:
case QEvent::MouseButtonPress:
case QEvent::TouchBegin:
- event->accept();
- return true;
+ break;
+ //event->accept();
+ //return true;
case QEvent::Gesture:
return d->gestureEvent(static_cast<QGestureEvent *>(event));
default:
diff --git a/qdeclarativegesturerecognizers.cpp b/qdeclarativegesturerecognizers.cpp
index d8486a0..9d9aeaf 100644
--- a/qdeclarativegesturerecognizers.cpp
+++ b/qdeclarativegesturerecognizers.cpp
@@ -72,8 +72,6 @@ QGesture *QPanGestureRecognizer::create(QObject *target)
#else
static_cast<QWidget *>(target)->setAttribute(Qt::WA_AcceptTouchEvents);
#endif
- } else if (target) {
- return 0;
}
return new QPanGesture;
}
@@ -280,12 +278,8 @@ QPinchGestureRecognizer::QPinchGestureRecognizer()
QGesture *QPinchGestureRecognizer::create(QObject *target)
{
- if (target) {
- if (target->isWidgetType())
- static_cast<QWidget *>(target)->setAttribute(Qt::WA_AcceptTouchEvents);
- else
- return 0;
- }
+ if (target && target->isWidgetType())
+ static_cast<QWidget *>(target)->setAttribute(Qt::WA_AcceptTouchEvents);
return new QPinchGesture;
}
@@ -481,12 +475,8 @@ QSwipeGestureRecognizer::QSwipeGestureRecognizer()
QGesture *QSwipeGestureRecognizer::create(QObject *target)
{
- if (target) {
- if (target->isWidgetType())
- static_cast<QWidget *>(target)->setAttribute(Qt::WA_AcceptTouchEvents);
- else
- return 0;
- }
+ if (target && target->isWidgetType())
+ static_cast<QWidget *>(target)->setAttribute(Qt::WA_AcceptTouchEvents);
return new QSwipeGesture;
}
@@ -715,23 +705,28 @@ QTapGestureRecognizer::QTapGestureRecognizer()
QGesture *QTapGestureRecognizer::create(QObject *target)
{
- if (target) {
- if (target->isWidgetType())
- static_cast<QWidget *>(target)->setAttribute(Qt::WA_AcceptTouchEvents);
- else
- return 0;
- }
+ if (target && target->isWidgetType())
+ static_cast<QWidget *>(target)->setAttribute(Qt::WA_AcceptTouchEvents);
return new QTapGesture;
}
QGestureRecognizer::Result QTapGestureRecognizer::recognize(QGesture *state,
- QObject *,
+ QObject * target,
QEvent *event)
{
+// if (target) {
+// qDebug() << "QTapGestureRecognizer::recognize";
+// target->dumpObjectInfo();
+// }
+
QTapGesture *q = static_cast<QTapGesture *>(state);
QGestureRecognizer::Result result = QGestureRecognizer::CancelGesture;
+#ifndef QT_NO_GRAPHICSVIEW
+ const QGraphicsSceneMouseEvent *gsme = static_cast<const QGraphicsSceneMouseEvent *>(event);
+#endif
+
switch (event->type()) {
case QEvent::TouchBegin: {
@@ -759,6 +754,21 @@ QGestureRecognizer::Result QTapGestureRecognizer::recognize(QGesture *state,
break;
}
+
+#ifndef QT_NO_GRAPHICSVIEW
+ case QEvent::GraphicsSceneMousePress:
+ qDebug() << "GraphicsSceneMousePress in tap rec.";
+ if (!q->property("gotTouched").toBool()) {
+ if (!(gsme->modifiers() & Qt::ControlModifier)) {
+ state->setProperty("position", gsme->screenPos());
+ state->setHotSpot(gsme->screenPos());
+ event->accept();
+ return QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint;
+ }
+ }
+ return QGestureRecognizer::Ignore;
+#endif
+
case QEvent::MouseButtonPress:
if (!q->property("gotTouched").toBool()) {
QMouseEvent *ev = static_cast<QMouseEvent *>(event);
@@ -771,9 +781,15 @@ QGestureRecognizer::Result QTapGestureRecognizer::recognize(QGesture *state,
}
return QGestureRecognizer::Ignore;
+#ifndef QT_NO_GRAPHICSVIEW
+ case QEvent::GraphicsSceneMouseMove:
+#endif
case QEvent::MouseMove:
return QGestureRecognizer::Ignore;
+#ifndef QT_NO_GRAPHICSVIEW
+ case QEvent::GraphicsSceneMouseRelease:
+#endif
case QEvent::MouseButtonRelease:
if (!q->property("gotTouched").toBool()) {
if (state->state() == Qt::GestureStarted) {
@@ -820,12 +836,8 @@ QTapAndHoldGestureRecognizer::QTapAndHoldGestureRecognizer()
QGesture *QTapAndHoldGestureRecognizer::create(QObject *target)
{
- if (target) {
- if (target->isWidgetType())
- static_cast<QWidget *>(target)->setAttribute(Qt::WA_AcceptTouchEvents);
- else
- return 0;
- }
+ if (target && target->isWidgetType())
+ static_cast<QWidget *>(target)->setAttribute(Qt::WA_AcceptTouchEvents);
return new QTapAndHoldGesture;
}