summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qguiapplication.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index c6376b2647..a19eebfb7c 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -2294,6 +2294,18 @@ void QGuiApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::To
if (w->d_func()->blockedByModalWindow) {
// a modal window is blocking this window, don't allow touch events through
+
+ // QTBUG-37371 temporary fix; TODO: revisit in 5.4 when we have a forwarding solution
+ if (eventType == QEvent::TouchEnd) {
+ // but don't leave dangling state: e.g.
+ // QQuickWindowPrivate::itemForTouchPointId needs to be cleared.
+ QTouchEvent touchEvent(QEvent::TouchCancel,
+ e->device,
+ e->modifiers);
+ touchEvent.setTimestamp(e->timestamp);
+ touchEvent.setWindow(w);
+ QGuiApplication::sendSpontaneousEvent(w, &touchEvent);
+ }
continue;
}