aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2017-03-30 15:39:44 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2017-04-24 17:16:38 +0000
commitb8dbafcae9ccfbf5c2ef7a173c51a73e57476681 (patch)
tree286ed103ed40450681fd2de7a140b8c9ce2b143b
parentd728ad7ace09c2b35d6753fc08c4092ea8813193 (diff)
QQuickPointerSingleHandler: add setIgnoreAdditionalPoints
After 3523b676382db4aa39adeb9126d8bb2185e84403 it became impossible to write a subclass which handles one point and ignores the rest. In some cases this is necessary. Change-Id: I27511e6112a93ef98a4cf45c8531287781698b5b Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
-rw-r--r--src/quick/handlers/qquickpointersinglehandler.cpp8
-rw-r--r--src/quick/handlers/qquickpointersinglehandler_p.h3
2 files changed, 10 insertions, 1 deletions
diff --git a/src/quick/handlers/qquickpointersinglehandler.cpp b/src/quick/handlers/qquickpointersinglehandler.cpp
index 020d3ef7de..5ad60291dd 100644
--- a/src/quick/handlers/qquickpointersinglehandler.cpp
+++ b/src/quick/handlers/qquickpointersinglehandler.cpp
@@ -56,6 +56,7 @@ QQuickPointerSingleHandler::QQuickPointerSingleHandler(QObject *parent)
, m_rotation(0)
, m_pressure(0)
, m_acceptedButtons(Qt::AllButtons)
+ , m_ignoreAdditionalPoints(false)
{
}
@@ -83,7 +84,7 @@ bool QQuickPointerSingleHandler::wantsPointerEvent(QQuickPointerEvent *event)
}
}
if (point) {
- if (candidatePointCount == 1) {
+ if (candidatePointCount == 1 || (candidatePointCount > 1 && m_ignoreAdditionalPoints)) {
point->setAccepted();
return true;
} else {
@@ -192,6 +193,11 @@ void QQuickPointerSingleHandler::onGrabChanged(QQuickPointerHandler *grabber, QQ
emit singlePointGrabChanged();
}
+void QQuickPointerSingleHandler::setIgnoreAdditionalPoints(bool v)
+{
+ m_ignoreAdditionalPoints = v;
+}
+
void QQuickPointerSingleHandler::setPressedButtons(Qt::MouseButtons buttons)
{
if (buttons != m_pressedButtons) {
diff --git a/src/quick/handlers/qquickpointersinglehandler_p.h b/src/quick/handlers/qquickpointersinglehandler_p.h
index 9c854c4d0d..466de1a1eb 100644
--- a/src/quick/handlers/qquickpointersinglehandler_p.h
+++ b/src/quick/handlers/qquickpointersinglehandler_p.h
@@ -106,6 +106,8 @@ protected:
QQuickEventPoint *currentPoint(QQuickPointerEvent *ev) { return ev->pointById(m_pointId); }
void onGrabChanged(QQuickPointerHandler *grabber, QQuickEventPoint::GrabState stateChange, QQuickEventPoint *point) override;
+ void setIgnoreAdditionalPoints(bool v = true);
+
private:
void setPressedButtons(Qt::MouseButtons buttons);
void reset();
@@ -122,6 +124,7 @@ private:
qreal m_pressure;
QSizeF m_ellipseDiameters;
Qt::MouseButtons m_acceptedButtons;
+ bool m_ignoreAdditionalPoints : 1;
};
QT_END_NAMESPACE