From da722fb448f06cf43780e6f857a1ccd9f07176d6 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Thu, 26 Apr 2018 16:06:45 +0200 Subject: 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 Reviewed-by: Shawn Rutledge --- src/quick/handlers/qquickmultipointhandler.cpp | 28 +------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) (limited to 'src/quick/handlers/qquickmultipointhandler.cpp') 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 QQuickMultiPointHandler::eligiblePoints(QQuickPointe { QVector 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 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; -- cgit v1.2.3