diff options
Diffstat (limited to 'src/input/backend/mousedevice.cpp')
-rw-r--r-- | src/input/backend/mousedevice.cpp | 9 |
1 files changed, 7 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 { |