diff options
author | Jan Arve Saether <jan-arve.saether@qt.io> | 2017-02-22 14:19:12 +0100 |
---|---|---|
committer | Jan Arve Sæther <jan-arve.saether@qt.io> | 2017-02-23 12:29:10 +0000 |
commit | e53510944169ac9f6753e0d14e1b24a24ff7bd9a (patch) | |
tree | 117b20c0045b0fcf4a0dd2f744068e75b607731d /src/quick/handlers | |
parent | ac61ca1a2e18bd472d36fdad730a797a913fe347 (diff) |
API: Move acceptedButtons to QQuickPointerSingleHandler
Change-Id: I8cb393986e587e69d550ec03f691258c79d9237a
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/quick/handlers')
-rw-r--r-- | src/quick/handlers/qquickpointerdevicehandler.cpp | 16 | ||||
-rw-r--r-- | src/quick/handlers/qquickpointerdevicehandler_p.h | 5 | ||||
-rw-r--r-- | src/quick/handlers/qquickpointersinglehandler.cpp | 14 | ||||
-rw-r--r-- | src/quick/handlers/qquickpointersinglehandler_p.h | 8 | ||||
-rw-r--r-- | src/quick/handlers/qquicktaphandler.cpp | 2 |
5 files changed, 22 insertions, 23 deletions
diff --git a/src/quick/handlers/qquickpointerdevicehandler.cpp b/src/quick/handlers/qquickpointerdevicehandler.cpp index 03704ac09e..3a320fdb32 100644 --- a/src/quick/handlers/qquickpointerdevicehandler.cpp +++ b/src/quick/handlers/qquickpointerdevicehandler.cpp @@ -53,7 +53,6 @@ QQuickPointerDeviceHandler::QQuickPointerDeviceHandler(QObject *parent) : QQuickPointerHandler(parent) , m_acceptedDevices(QQuickPointerDevice::AllDevices) , m_acceptedPointerTypes(QQuickPointerDevice::AllPointerTypes) - , m_acceptedButtons(Qt::AllButtons) { } @@ -79,30 +78,17 @@ void QQuickPointerDeviceHandler::setAcceptedPointerTypes(QQuickPointerDevice::Po emit acceptedPointerTypesChanged(); } -void QQuickPointerDeviceHandler::setAcceptedButtons(Qt::MouseButtons buttons) -{ - if (m_acceptedButtons == buttons) - return; - - m_acceptedButtons = buttons; - emit acceptedButtonsChanged(); -} - bool QQuickPointerDeviceHandler::wantsPointerEvent(QQuickPointerEvent *event) { if (!QQuickPointerHandler::wantsPointerEvent(event)) return false; qCDebug(lcPointerHandlerDispatch) << objectName() << "checking device type" << m_acceptedDevices - << "pointer type" << m_acceptedPointerTypes - << "buttons" << m_acceptedButtons; + << "pointer type" << m_acceptedPointerTypes; if ((event->device()->type() & m_acceptedDevices) == 0) return false; if ((event->device()->pointerType() & m_acceptedPointerTypes) == 0) return false; - if (event->device()->pointerType() != QQuickPointerDevice::Finger && - (event->buttons() & m_acceptedButtons) == 0 && (event->button() & m_acceptedButtons) == 0) - return false; return true; } diff --git a/src/quick/handlers/qquickpointerdevicehandler_p.h b/src/quick/handlers/qquickpointerdevicehandler_p.h index 2ca7310da8..76c9cc44f0 100644 --- a/src/quick/handlers/qquickpointerdevicehandler_p.h +++ b/src/quick/handlers/qquickpointerdevicehandler_p.h @@ -60,7 +60,6 @@ class Q_AUTOTEST_EXPORT QQuickPointerDeviceHandler : public QQuickPointerHandler Q_OBJECT Q_PROPERTY(QQuickPointerDevice::DeviceTypes acceptedDevices READ acceptedDevices WRITE setAcceptedDevices NOTIFY acceptedDevicesChanged) Q_PROPERTY(QQuickPointerDevice::PointerTypes acceptedPointerTypes READ acceptedPointerTypes WRITE setAcceptedPointerTypes NOTIFY acceptedPointerTypesChanged) - Q_PROPERTY(Qt::MouseButtons acceptedButtons READ acceptedButtons WRITE setAcceptedButtons NOTIFY acceptedButtonsChanged) public: explicit QQuickPointerDeviceHandler(QObject *parent = 0); @@ -68,17 +67,14 @@ public: QQuickPointerDevice::DeviceTypes acceptedDevices() const { return m_acceptedDevices; } QQuickPointerDevice::PointerTypes acceptedPointerTypes() const { return m_acceptedPointerTypes; } - Qt::MouseButtons acceptedButtons() const { return m_acceptedButtons; } public slots: void setAcceptedDevices(QQuickPointerDevice::DeviceTypes acceptedDevices); void setAcceptedPointerTypes(QQuickPointerDevice::PointerTypes acceptedPointerTypes); - void setAcceptedButtons(Qt::MouseButtons buttons); Q_SIGNALS: void acceptedDevicesChanged(); void acceptedPointerTypesChanged(); - void acceptedButtonsChanged(); protected: bool wantsPointerEvent(QQuickPointerEvent *event) override; @@ -86,7 +82,6 @@ protected: protected: QQuickPointerDevice::DeviceTypes m_acceptedDevices; QQuickPointerDevice::PointerTypes m_acceptedPointerTypes; - Qt::MouseButtons m_acceptedButtons; }; QT_END_NAMESPACE diff --git a/src/quick/handlers/qquickpointersinglehandler.cpp b/src/quick/handlers/qquickpointersinglehandler.cpp index ec66112519..5a8ec2a7fd 100644 --- a/src/quick/handlers/qquickpointersinglehandler.cpp +++ b/src/quick/handlers/qquickpointersinglehandler.cpp @@ -55,6 +55,7 @@ QQuickPointerSingleHandler::QQuickPointerSingleHandler(QObject *parent) , m_pointId(0) , m_rotation(0) , m_pressure(0) + , m_acceptedButtons(Qt::AllButtons) { } @@ -62,6 +63,10 @@ bool QQuickPointerSingleHandler::wantsPointerEvent(QQuickPointerEvent *event) { if (!QQuickPointerDeviceHandler::wantsPointerEvent(event)) return false; + if (event->device()->pointerType() != QQuickPointerDevice::Finger && + (event->buttons() & m_acceptedButtons) == 0 && (event->button() & m_acceptedButtons) == 0) + return false; + if (m_pointId) { // We already know which one we want, so check whether it's there. // It's expected to be an update or a release. @@ -174,6 +179,15 @@ void QQuickPointerSingleHandler::setPressedButtons(Qt::MouseButtons buttons) } } +void QQuickPointerSingleHandler::setAcceptedButtons(Qt::MouseButtons buttons) +{ + if (m_acceptedButtons == buttons) + return; + + m_acceptedButtons = buttons; + emit acceptedButtonsChanged(); +} + void QQuickPointerSingleHandler::reset() { bool pointIdChange = m_pointId != 0; diff --git a/src/quick/handlers/qquickpointersinglehandler_p.h b/src/quick/handlers/qquickpointersinglehandler_p.h index 8c25b9efa4..9c854c4d0d 100644 --- a/src/quick/handlers/qquickpointersinglehandler_p.h +++ b/src/quick/handlers/qquickpointersinglehandler_p.h @@ -70,13 +70,15 @@ class Q_QUICK_PRIVATE_EXPORT QQuickPointerSingleHandler : public QQuickPointerDe Q_PROPERTY(qreal rotation READ rotation NOTIFY eventPointHandled) Q_PROPERTY(qreal pressure READ pressure NOTIFY eventPointHandled) Q_PROPERTY(QSizeF ellipseDiameters READ ellipseDiameters NOTIFY eventPointHandled) - + Q_PROPERTY(Qt::MouseButtons acceptedButtons READ acceptedButtons WRITE setAcceptedButtons NOTIFY acceptedButtonsChanged) public: explicit QQuickPointerSingleHandler(QObject *parent = 0); virtual ~QQuickPointerSingleHandler() { } int pointId() const { return m_pointId; } Qt::MouseButtons pressedButtons() const { return m_pressedButtons; } + Qt::MouseButtons acceptedButtons() const { return m_acceptedButtons; } + void setAcceptedButtons(Qt::MouseButtons buttons); QPointF pressPos() const { return m_pressPos; } QPointF scenePressPos() const { return parentItem()->mapToScene(m_pressPos); } QPointF sceneGrabPos() const { return m_sceneGrabPos; } @@ -88,9 +90,10 @@ public: QSizeF ellipseDiameters() const { return m_ellipseDiameters; } QPointingDeviceUniqueId uniquePointId() const { return m_uniquePointId; } -signals: +Q_SIGNALS: void pointIdChanged(); void pressedButtonsChanged(); + void acceptedButtonsChanged(); void singlePointGrabChanged(); // QQuickPointerHandler::grabChanged signal can't be a property notifier here void eventPointHandled(); @@ -118,6 +121,7 @@ private: qreal m_rotation; qreal m_pressure; QSizeF m_ellipseDiameters; + Qt::MouseButtons m_acceptedButtons; }; QT_END_NAMESPACE diff --git a/src/quick/handlers/qquicktaphandler.cpp b/src/quick/handlers/qquicktaphandler.cpp index b05d32f4b4..5ee415d710 100644 --- a/src/quick/handlers/qquicktaphandler.cpp +++ b/src/quick/handlers/qquicktaphandler.cpp @@ -148,7 +148,7 @@ void QQuickTapHandler::handleEventPoint(QQuickEventPoint *point) setPressed(true, false, point); break; case QQuickEventPoint::Released: - if ((point->pointerEvent()->buttons() & m_acceptedButtons) == Qt::NoButton) + if ((point->pointerEvent()->buttons() & acceptedButtons()) == Qt::NoButton) setPressed(false, false, point); break; default: |