From 7136f5b90787741e96689c13419aea23244db275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Tue, 4 Jan 2011 18:12:50 +0100 Subject: Backported jump fix to Flickable Avoid Flickable view jumping when drag threashold is exceeded. (d630c627ed1dfbcfb48f907d2d37048b049830a5) --- src/graphicsitems/qxflickable.cpp | 10 ++++++++-- src/graphicsitems/qxflickable_p_p.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/graphicsitems/qxflickable.cpp b/src/graphicsitems/qxflickable.cpp index 78c0e7a..0287205 100644 --- a/src/graphicsitems/qxflickable.cpp +++ b/src/graphicsitems/qxflickable.cpp @@ -642,6 +642,8 @@ void QxFlickablePrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event) timeline.clear(); hData.velocity = 0; vData.velocity = 0; + hData.dragStartOffset = 0; + vData.dragStartOffset = 0; lastPos = QPoint(); lastPosTime.start(); pressPos = event->pos(); @@ -664,7 +666,9 @@ void QxFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event) if (q->yflick()) { int dy = int(event->pos().y() - pressPos.y()); if (qAbs(dy) > QApplication::startDragDistance() || pressTime.elapsed() > 200) { - qreal newY = dy + vData.pressPos; + if (!vMoved) + vData.dragStartOffset = dy; + qreal newY = dy + vData.pressPos - vData.dragStartOffset; const qreal minY = q->minYExtent(); const qreal maxY = q->maxYExtent(); if (newY > minY) @@ -691,7 +695,9 @@ void QxFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event) if (q->xflick()) { int dx = int(event->pos().x() - pressPos.x()); if (qAbs(dx) > QApplication::startDragDistance() || pressTime.elapsed() > 200) { - qreal newX = dx + hData.pressPos; + if (!hMoved) + hData.dragStartOffset = dx; + qreal newX = dx + hData.pressPos - hData.dragStartOffset; const qreal minX = q->minXExtent(); const qreal maxX = q->maxXExtent(); if (newX > minX) diff --git a/src/graphicsitems/qxflickable_p_p.h b/src/graphicsitems/qxflickable_p_p.h index fa28be4..264bddc 100644 --- a/src/graphicsitems/qxflickable_p_p.h +++ b/src/graphicsitems/qxflickable_p_p.h @@ -94,6 +94,7 @@ public: QDeclarativeTimeLineValueProxy move; qreal viewSize; qreal pressPos; + qreal dragStartOffset; qreal velocity; qreal flickTarget; QxFlickablePrivate::Velocity smoothVelocity; -- cgit v1.2.3