summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandinputdevice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/qwaylandinputdevice.cpp')
-rw-r--r--src/client/qwaylandinputdevice.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index 6c72c59d7..669deac2a 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -256,6 +256,12 @@ void QWaylandInputDevice::handleWindowDestroyed(QWaylandWindow *window)
mTouch->mFocus = 0;
}
+void QWaylandInputDevice::handleEndDrag()
+{
+ if (mTouch)
+ mTouch->releasePoints();
+}
+
void QWaylandInputDevice::setDataDevice(QWaylandDataDevice *device)
{
mDataDevice = device;
@@ -827,6 +833,16 @@ bool QWaylandInputDevice::Touch::allTouchPointsReleased()
return true;
}
+void QWaylandInputDevice::Touch::releasePoints()
+{
+ Q_FOREACH (const QWindowSystemInterface::TouchPoint &previousPoint, mPrevTouchPoints) {
+ QWindowSystemInterface::TouchPoint tp = previousPoint;
+ tp.state = Qt::TouchPointReleased;
+ mTouchPoints.append(tp);
+ }
+ touch_frame();
+}
+
void QWaylandInputDevice::Touch::touch_frame()
{
// Copy all points, that are in the previous but not in the current list, as stationary.