aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickpathview.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2014-08-12 10:03:53 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2014-08-12 10:04:33 +0200
commit61f72d32b4fddc6e87f21d0243d9f0a32ca61987 (patch)
treeb166541b885e33666bc3dffbde937b5dc0e93bc5 /src/quick/items/qquickpathview.cpp
parent430853836f9c17154ef3ee4cac6b03b90ee493a9 (diff)
parent01c6af3fc940378e8eee41a9fb8273420ef5a7e1 (diff)
Merge remote-tracking branch 'origin/5.3' into 5.4
Conflicts: src/qml/jsruntime/qv4include.cpp src/quick/items/qquickrendercontrol.cpp src/quick/items/qquickrendercontrol_p.h src/quickwidgets/qquickwidget.cpp Change-Id: Ib2dc0051a38cd283a37a7665eb4a76f6f7ec8b15
Diffstat (limited to 'src/quick/items/qquickpathview.cpp')
-rw-r--r--src/quick/items/qquickpathview.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/quick/items/qquickpathview.cpp b/src/quick/items/qquickpathview.cpp
index efce244f7d..216b7cc7c1 100644
--- a/src/quick/items/qquickpathview.cpp
+++ b/src/quick/items/qquickpathview.cpp
@@ -1599,6 +1599,7 @@ void QQuickPathViewPrivate::handleMousePressEvent(QMouseEvent *event)
return;
startPoint = pointNear(event->localPos(), &startPc);
+ startPos = event->localPos();
if (idx == items.count()) {
qreal distance = qAbs(event->localPos().x() - startPoint.x()) + qAbs(event->localPos().y() - startPoint.y());
if (distance > dragMargin)
@@ -1621,8 +1622,6 @@ void QQuickPathView::mouseMoveEvent(QMouseEvent *event)
Q_D(QQuickPathView);
if (d->interactive) {
d->handleMouseMoveEvent(event);
- if (d->stealMouse)
- setKeepMouseGrab(true);
event->accept();
} else {
QQuickItem::mouseMoveEvent(event);
@@ -1639,9 +1638,17 @@ void QQuickPathViewPrivate::handleMouseMoveEvent(QMouseEvent *event)
qreal newPc;
QPointF pathPoint = pointNear(event->localPos(), &newPc);
if (!stealMouse) {
- QPointF delta = pathPoint - startPoint;
- if (qAbs(delta.x()) > qApp->styleHints()->startDragDistance() || qAbs(delta.y()) > qApp->styleHints()->startDragDistance()) {
- stealMouse = true;
+ QPointF posDelta = event->localPos() - startPos;
+ if (QQuickWindowPrivate::dragOverThreshold(posDelta.y(), Qt::YAxis, event) || QQuickWindowPrivate::dragOverThreshold(posDelta.x(), Qt::XAxis, event)) {
+ // The touch has exceeded the threshold. If the movement along the path is close to the drag threshold
+ // then we'll assume that this gesture targets the PathView. This ensures PathView gesture grabbing
+ // is in sync with other items.
+ QPointF pathDelta = pathPoint - startPoint;
+ if (qAbs(pathDelta.x()) > qApp->styleHints()->startDragDistance() * 0.8
+ || qAbs(pathDelta.y()) > qApp->styleHints()->startDragDistance() * 0.8) {
+ stealMouse = true;
+ q->setKeepMouseGrab(true);
+ }
}
} else {
moveReason = QQuickPathViewPrivate::Mouse;