summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/input/backend/mousedevice.cpp9
-rw-r--r--src/input/backend/mousedevice_p.h1
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;
};