diff options
Diffstat (limited to 'src/quick/handlers')
-rw-r--r-- | src/quick/handlers/qquickhoverhandler.cpp | 3 | ||||
-rw-r--r-- | src/quick/handlers/qquickpointerdevicehandler.cpp | 4 | ||||
-rw-r--r-- | src/quick/handlers/qquicksinglepointhandler.cpp | 3 |
3 files changed, 7 insertions, 3 deletions
diff --git a/src/quick/handlers/qquickhoverhandler.cpp b/src/quick/handlers/qquickhoverhandler.cpp index 61955cad03..bdcd5dc4cc 100644 --- a/src/quick/handlers/qquickhoverhandler.cpp +++ b/src/quick/handlers/qquickhoverhandler.cpp @@ -38,6 +38,7 @@ ****************************************************************************/ #include "qquickhoverhandler_p.h" +#include <private/qquickpointerdevicehandler_p_p.h> QT_BEGIN_NAMESPACE @@ -59,6 +60,8 @@ Q_LOGGING_CATEGORY(lcHoverHandler, "qt.quick.handler.hover") QQuickHoverHandler::QQuickHoverHandler(QQuickItem *parent) : QQuickSinglePointHandler(parent) { + // Tell QQuickPointerDeviceHandler::wantsPointerEvent() to ignore button state + d_func()->acceptedButtons = Qt::NoButton; // Rule out the touchscreen for now (can be overridden in QML in case a hover-detecting touchscreen exists) setAcceptedDevices(static_cast<QQuickPointerDevice::DeviceType>( static_cast<int>(QQuickPointerDevice::AllDevices) ^ static_cast<int>(QQuickPointerDevice::TouchScreen))); diff --git a/src/quick/handlers/qquickpointerdevicehandler.cpp b/src/quick/handlers/qquickpointerdevicehandler.cpp index 096fad2071..246686e4f4 100644 --- a/src/quick/handlers/qquickpointerdevicehandler.cpp +++ b/src/quick/handlers/qquickpointerdevicehandler.cpp @@ -256,6 +256,10 @@ bool QQuickPointerDeviceHandler::wantsPointerEvent(QQuickPointerEvent *event) return false; if (d->acceptedModifiers != Qt::KeyboardModifierMask && event->modifiers() != d->acceptedModifiers) return false; + // HoverHandler sets acceptedButtons to Qt::NoButton to indicate that button state is irrelevant. + if (event->device()->pointerType() != QQuickPointerDevice::Finger && acceptedButtons() != Qt::NoButton && + (event->buttons() & acceptedButtons()) == 0 && (event->button() & acceptedButtons()) == 0) + return false; return true; } diff --git a/src/quick/handlers/qquicksinglepointhandler.cpp b/src/quick/handlers/qquicksinglepointhandler.cpp index ae162bed87..81859f6c80 100644 --- a/src/quick/handlers/qquicksinglepointhandler.cpp +++ b/src/quick/handlers/qquicksinglepointhandler.cpp @@ -67,9 +67,6 @@ bool QQuickSinglePointHandler::wantsPointerEvent(QQuickPointerEvent *event) { if (!QQuickPointerDeviceHandler::wantsPointerEvent(event)) return false; - if (event->device()->pointerType() != QQuickPointerDevice::Finger && - (event->buttons() & acceptedButtons()) == 0 && (event->button() & acceptedButtons()) == 0) - return false; if (m_pointInfo.m_id) { // We already know which one we want, so check whether it's there. |