summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/kernel')
-rw-r--r--src/gui/kernel/qgesture.h1
-rw-r--r--src/gui/kernel/qgesturemanager.cpp37
-rw-r--r--src/gui/kernel/qgesturemanager_p.h2
3 files changed, 18 insertions, 22 deletions
diff --git a/src/gui/kernel/qgesture.h b/src/gui/kernel/qgesture.h
index 524d26e..8614ecb 100644
--- a/src/gui/kernel/qgesture.h
+++ b/src/gui/kernel/qgesture.h
@@ -97,6 +97,7 @@ private:
friend class QGestureEvent;
friend class QGestureRecognizer;
friend class QGestureManager;
+ friend class QGraphicsScenePrivate;
};
class QPanGesturePrivate;
diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp
index f1abc89..1d33c84 100644
--- a/src/gui/kernel/qgesturemanager.cpp
+++ b/src/gui/kernel/qgesturemanager.cpp
@@ -346,12 +346,7 @@ bool QGestureManager::filterEventThroughContexts(const QMultiHash<QObject *,
QSet<QGesture *> endedGestures =
finishedGestures + canceledGestures + undeliveredGestures;
foreach (QGesture *gesture, endedGestures) {
- if (QGestureRecognizer *recognizer = m_gestureToRecognizer.value(gesture, 0)) {
- gesture->setGestureCancelPolicy(QGesture::CancelNone);
- recognizer->reset(gesture);
- } else {
- cleanupGesturesForRemovedRecognizer(gesture);
- }
+ recycle(gesture);
m_gestureTargets.remove(gesture);
}
return ret;
@@ -409,15 +404,8 @@ void QGestureManager::cancelGesturesForChildren(QGesture *original)
deliverEvents(gestures, &undeliveredGestures);
}
- for (iter = cancelledGestures.begin(); iter != cancelledGestures.end(); ++iter) {
- QGestureRecognizer *recognizer = m_gestureToRecognizer.value(*iter, 0);
- if (recognizer) {
- (*iter)->setGestureCancelPolicy(QGesture::CancelNone);
- recognizer->reset(*iter);
- } else {
- cleanupGesturesForRemovedRecognizer(*iter);
- }
- }
+ for (iter = cancelledGestures.begin(); iter != cancelledGestures.end(); ++iter)
+ recycle(*iter);
}
void QGestureManager::cleanupGesturesForRemovedRecognizer(QGesture *gesture)
@@ -667,19 +655,24 @@ void QGestureManager::timerEvent(QTimerEvent *event)
it = m_maybeGestures.erase(it);
DEBUG() << "QGestureManager::timerEvent: gesture stopped due to timeout:"
<< gesture;
- QGestureRecognizer *recognizer = m_gestureToRecognizer.value(gesture, 0);
- if (recognizer) {
- gesture->setGestureCancelPolicy(QGesture::CancelNone);
- recognizer->reset(gesture);
- } else {
- cleanupGesturesForRemovedRecognizer(gesture);
- }
+ recycle(gesture);
} else {
++it;
}
}
}
+void QGestureManager::recycle(QGesture *gesture)
+{
+ QGestureRecognizer *recognizer = m_gestureToRecognizer.value(gesture, 0);
+ if (recognizer) {
+ gesture->setGestureCancelPolicy(QGesture::CancelNone);
+ recognizer->reset(gesture);
+ } else {
+ cleanupGesturesForRemovedRecognizer(gesture);
+ }
+}
+
QT_END_NAMESPACE
#include "moc_qgesturemanager_p.cpp"
diff --git a/src/gui/kernel/qgesturemanager_p.h b/src/gui/kernel/qgesturemanager_p.h
index 4958cdb..d60aedc 100644
--- a/src/gui/kernel/qgesturemanager_p.h
+++ b/src/gui/kernel/qgesturemanager_p.h
@@ -81,6 +81,8 @@ public:
void cleanupCachedGestures(QObject *target, Qt::GestureType type);
+ void recycle(QGesture *gesture);
+
protected:
void timerEvent(QTimerEvent *event);
bool filterEventThroughContexts(const QMultiHash<QObject *, Qt::GestureType> &contexts,