diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2018-04-26 16:06:45 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2018-06-29 14:42:11 +0000 |
commit | da722fb448f06cf43780e6f857a1ccd9f07176d6 (patch) | |
tree | 3bea83e40d751c361f76bb1f76fc1d591330d34e /src/quick/handlers/qquickmultipointhandler.cpp | |
parent | dd333172e2ade1db6d0af72b4ed44262c2b4d8c7 (diff) |
Replace MultiPtHndlr.pointDistanceThreshold with PointerHandler.margin
It's not just useful for PinchHandler: TapHandler has a good use for it
too. But unfortunately if the handler's parent Item has a custom mask,
we don't have a way to augment the mask with a margin; so if margin is
set, we assume the bounds are rectangular.
QQuickMultiPointHandler::eligiblePoints() now calls wantsEventPoint()
rather than bounds-checking the point directly: this adds flexibility,
potentially allowing an override in subclasses, if we need it later.
Task-number: QTBUG-68077
Change-Id: I65c95f00c532044a5862654e58c9c5f8c973df81
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/quick/handlers/qquickmultipointhandler.cpp')
-rw-r--r-- | src/quick/handlers/qquickmultipointhandler.cpp | 28 |
1 files changed, 1 insertions, 27 deletions
diff --git a/src/quick/handlers/qquickmultipointhandler.cpp b/src/quick/handlers/qquickmultipointhandler.cpp index a074e966aa..2236a7d18e 100644 --- a/src/quick/handlers/qquickmultipointhandler.cpp +++ b/src/quick/handlers/qquickmultipointhandler.cpp @@ -63,7 +63,6 @@ QQuickMultiPointHandler::QQuickMultiPointHandler(QObject *parent, int minimumPoi : QQuickPointerDeviceHandler(parent) , m_minimumPointCount(minimumPointCount) , m_maximumPointCount(-1) - , m_pointDistanceThreshold(0) { } @@ -109,8 +108,6 @@ QVector<QQuickEventPoint *> QQuickMultiPointHandler::eligiblePoints(QQuickPointe { QVector<QQuickEventPoint *> ret; int c = event->pointCount(); - QRectF parentBounds = parentItem()->mapRectToScene(parentItem()->boundingRect()) - .marginsAdded(QMarginsF(m_pointDistanceThreshold, m_pointDistanceThreshold, m_pointDistanceThreshold, m_pointDistanceThreshold)); // If one or more points are newly pressed or released, all non-released points are candidates for this handler. // In other cases however, do not steal the grab: that is, if a point has a grabber, // it's not a candidate for this handler. @@ -122,7 +119,7 @@ QVector<QQuickEventPoint *> QQuickMultiPointHandler::eligiblePoints(QQuickPointe if (exclusiveGrabber && exclusiveGrabber != this) continue; } - if (p->state() != QQuickEventPoint::Released && parentBounds.contains(p->scenePosition())) + if (p->state() != QQuickEventPoint::Released && wantsEventPoint(p)) ret << p; } return ret; @@ -176,29 +173,6 @@ void QQuickMultiPointHandler::setMaximumPointCount(int maximumPointCount) emit maximumPointCountChanged(); } -/*! - \qmlproperty real MultiPointHandler::pointDistanceThreshold - - The margin beyond the bounds of the \l {PointerHandler::parent}{parent} - item within which a touch point can activate this handler. For example, on - a PinchHandler where the \l {PointerHandler::target}{target} is also the - \c parent, it's useful to set this to a distance at least half the width - of a typical user's finger, so that if the \c parent has been scaled down - to a very small size, the pinch gesture is still possible. - - The default value is 0. - - \image pointDistanceThreshold.png -*/ -void QQuickMultiPointHandler::setPointDistanceThreshold(qreal pointDistanceThreshold) -{ - if (m_pointDistanceThreshold == pointDistanceThreshold) - return; - - m_pointDistanceThreshold = pointDistanceThreshold; - emit pointDistanceThresholdChanged(); -} - bool QQuickMultiPointHandler::hasCurrentPoints(QQuickPointerEvent *event) { bool ret = true; |