diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2019-04-03 16:16:19 +0200 |
---|---|---|
committer | Jan Arve Sæther <jan-arve.saether@qt.io> | 2019-04-04 13:13:18 +0000 |
commit | aba6cea90e023c99ac55b0e8dcdeae0af8305ef2 (patch) | |
tree | 7215ab679ea62eebe021d65b3fd221f3155eeff4 /tests/auto/quick/qquicklistview/data/delegateWithMouseArea.qml | |
parent | 14109aaccc37df53a0c4b591dddd68b41ec20ec3 (diff) |
In response to touch cancel, don't just ungrab, send an ungrab event
QQuickWindowPrivate::sendUngrabEvent() sends an UngrabMouse event, and
that can be filtered by parent filters. If a touch cancel happens to a
MouseArea in a ListView delegate, we need the ListView to filter the
UngrabMouse event so that QQuickFlickable::childMouseEventFilter() will
call QQuickFlickable::mouseUngrabEvent() and
QQuickFlickablePrivate::cancelInteraction() will set pressed to false.
The pressed state became true because Flickable filtered the press
event; so for symmetry, it also needs to filter the touch cancel (in the
form of a mouse ungrab), to avoid being stuck in a state where it can't
move programmatically.
Fixes: QTBUG-74679
Change-Id: I6c0ed364d2bc1f45c7e7b17846a09f6b53f91d0a
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Diffstat (limited to 'tests/auto/quick/qquicklistview/data/delegateWithMouseArea.qml')
-rw-r--r-- | tests/auto/quick/qquicklistview/data/delegateWithMouseArea.qml | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/auto/quick/qquicklistview/data/delegateWithMouseArea.qml b/tests/auto/quick/qquicklistview/data/delegateWithMouseArea.qml new file mode 100644 index 0000000000..e0b8222bfb --- /dev/null +++ b/tests/auto/quick/qquicklistview/data/delegateWithMouseArea.qml @@ -0,0 +1,29 @@ +import QtQuick 2.12 + +ListView { + id: root + objectName: "view" + width: 600 + height: 600 + model: 3 + snapMode: ListView.SnapOneItem + boundsBehavior: Flickable.StopAtBounds + highlightRangeMode: ListView.StrictlyEnforceRange + preferredHighlightBegin: 0 + preferredHighlightEnd: 0 + highlightMoveDuration: 100 + delegate: Rectangle { + id: delegateRect + width: 500 + height: 500 + color: Qt.rgba(Math.random(), Math.random(), Math.random(), 1) + Text { + text: index + font.pixelSize: 128 + anchors.centerIn: parent + } + MouseArea { + anchors.fill: parent + } + } +} |