diff options
author | Liang Qi <liang.qi@qt.io> | 2019-10-07 13:10:18 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2019-10-07 13:10:18 +0200 |
commit | 7e17fb2ded407cd75643f248d39a21721cfd79f7 (patch) | |
tree | ce24e8e7a94d5bc74566086b61c4164236e468ad /src/quick/items/qquickevents.cpp | |
parent | f3d40bd0203acda21abfb3c3c71e526646706616 (diff) | |
parent | 67fc5b677a05f88f043ea825810b7b244a516b42 (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp
Change-Id: Id2e81000bcbd4de18fe22b085fdf5eed42c02516
Diffstat (limited to 'src/quick/items/qquickevents.cpp')
-rw-r--r-- | src/quick/items/qquickevents.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/quick/items/qquickevents.cpp b/src/quick/items/qquickevents.cpp index b0cfbaad6d..7d51a55a0c 100644 --- a/src/quick/items/qquickevents.cpp +++ b/src/quick/items/qquickevents.cpp @@ -41,6 +41,7 @@ #include <QtCore/qmap.h> #include <QtGui/private/qguiapplication_p.h> #include <QtGui/private/qtouchdevice_p.h> +#include <QtGui/private/qevent_p.h> #include <QtQuick/private/qquickitem_p.h> #include <QtQuick/private/qquickpointerhandler_p.h> #include <QtQuick/private/qquickwindow_p.h> @@ -1828,6 +1829,7 @@ QTouchEvent *QQuickPointerTouchEvent::touchEventForItem(QQuickItem *item, bool i // but that would require changing tst_qquickwindow::touchEvent_velocity(): it expects transformed velocity bool anyPressOrReleaseInside = false; + bool anyStationaryWithModifiedPropertyInside = false; bool anyGrabber = false; QMatrix4x4 transformMatrix(QQuickItemPrivate::get(item)->windowToItemTransform()); for (int i = 0; i < m_pointCount; ++i) { @@ -1860,6 +1862,8 @@ QTouchEvent *QQuickPointerTouchEvent::touchEventForItem(QQuickItem *item, bool i anyPressOrReleaseInside = true; const QTouchEvent::TouchPoint *tp = touchPointById(p->pointId()); if (tp) { + if (isInside && tp->d->stationaryWithModifiedProperty) + anyStationaryWithModifiedPropertyInside = true; eventStates |= tp->state(); QTouchEvent::TouchPoint tpCopy = *tp; tpCopy.setPos(item->mapFromScene(tpCopy.scenePos())); @@ -1873,7 +1877,8 @@ QTouchEvent *QQuickPointerTouchEvent::touchEventForItem(QQuickItem *item, bool i // Now touchPoints will have only points which are inside the item. // But if none of them were just pressed inside, and the item has no other reason to care, ignore them anyway. - if (eventStates == Qt::TouchPointStationary || touchPoints.isEmpty() || (!anyPressOrReleaseInside && !anyGrabber && !isFiltering)) + if ((eventStates == Qt::TouchPointStationary && !anyStationaryWithModifiedPropertyInside) || + touchPoints.isEmpty() || (!anyPressOrReleaseInside && !anyGrabber && !isFiltering)) return nullptr; // if all points have the same state, set the event type accordingly |