diff options
-rw-r--r-- | src/input/backend/mousedevice.cpp | 9 | ||||
-rw-r--r-- | src/input/backend/mousedevice_p.h | 1 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/input/backend/mousedevice.cpp b/src/input/backend/mousedevice.cpp index 25f0a6682..c4dfc1819 100644 --- a/src/input/backend/mousedevice.cpp +++ b/src/input/backend/mousedevice.cpp @@ -55,6 +55,7 @@ namespace Input { MouseDevice::MouseDevice() : QAbstractPhysicalDeviceBackendNode(ReadOnly) , m_sensitivity(0.1f) + , m_wasPressed(false) { } @@ -127,8 +128,12 @@ void MouseDevice::updateMouseEvents(const QList<QT_PREPEND_NAMESPACE(QMouseEvent m_mouseState.leftPressed = e.buttons() & (Qt::LeftButton); m_mouseState.centerPressed = e.buttons() & (Qt::MiddleButton); m_mouseState.rightPressed = e.buttons() & (Qt::RightButton); - m_mouseState.xAxis = m_sensitivity * (e.screenPos().x() - m_previousPos.x()); - m_mouseState.yAxis = m_sensitivity * (m_previousPos.y() - e.screenPos().y()); + bool pressed = m_mouseState.leftPressed || m_mouseState.centerPressed || m_mouseState.rightPressed; + if (m_wasPressed && pressed) { + m_mouseState.xAxis = m_sensitivity * (e.screenPos().x() - m_previousPos.x()); + m_mouseState.yAxis = m_sensitivity * (m_previousPos.y() - e.screenPos().y()); + } + m_wasPressed = pressed; m_previousPos = e.screenPos(); } } else { diff --git a/src/input/backend/mousedevice_p.h b/src/input/backend/mousedevice_p.h index 3624aa8af..73cbd67c2 100644 --- a/src/input/backend/mousedevice_p.h +++ b/src/input/backend/mousedevice_p.h @@ -110,6 +110,7 @@ private: MouseState m_mouseState; QPointF m_previousPos; + bool m_wasPressed; float m_sensitivity; }; |