diff options
author | Martin Jones <martin.jones@nokia.com> | 2009-08-27 05:33:12 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2009-08-27 05:33:12 (GMT) |
commit | b99fd8c53ed7ed73d9bab171918829ba0911810a (patch) | |
tree | 64a5fce3cb8266e3f5ffe90e08cdf86d5b84187a /src/declarative | |
parent | 30f011823f0acacdfb3380a6ae52f05e2c8cdd6a (diff) | |
download | Qt-b99fd8c53ed7ed73d9bab171918829ba0911810a.zip Qt-b99fd8c53ed7ed73d9bab171918829ba0911810a.tar.gz Qt-b99fd8c53ed7ed73d9bab171918829ba0911810a.tar.bz2 |
Fix glitches when dragging a ListView.
Diffstat (limited to 'src/declarative')
-rw-r--r-- | src/declarative/fx/qfxflickable.cpp | 19 | ||||
-rw-r--r-- | src/declarative/fx/qfxlistview.cpp | 3 |
2 files changed, 6 insertions, 16 deletions
diff --git a/src/declarative/fx/qfxflickable.cpp b/src/declarative/fx/qfxflickable.cpp index 428815a..440c1ca 100644 --- a/src/declarative/fx/qfxflickable.cpp +++ b/src/declarative/fx/qfxflickable.cpp @@ -607,7 +607,6 @@ void QFxFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event) void QFxFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *) { Q_Q(QFxFlickable); - pressed = false; if (lastPosTime.isNull()) return; @@ -871,13 +870,8 @@ void QFxFlickable::setViewportWidth(int w) else d->_flick->setWidth(w); // Make sure that we're entirely in view. - if (d->_moveX.value() > minXExtent() || maxXExtent() > 0) { - d->_tl.clear(); - d->_moveX.setValue(minXExtent()); - } else if (d->_moveX.value() < maxXExtent()) { - d->_tl.clear(); - d->_moveX.setValue(maxXExtent()); - } + if (!d->pressed) + d->fixupX(); emit viewportWidthChanged(); d->updateBeginningEnd(); } @@ -919,13 +913,8 @@ void QFxFlickable::setViewportHeight(int h) else d->_flick->setHeight(h); // Make sure that we're entirely in view. - if (d->_moveY.value() > minYExtent() || maxYExtent() > 0) { - d->_tl.clear(); - d->_moveY.setValue(minYExtent()); - } else if (d->_moveY.value() < maxYExtent()) { - d->_tl.clear(); - d->_moveY.setValue(maxYExtent()); - } + if (!d->pressed) + d->fixupY(); emit viewportHeightChanged(); d->updateBeginningEnd(); } diff --git a/src/declarative/fx/qfxlistview.cpp b/src/declarative/fx/qfxlistview.cpp index 4030a0b..0dfdce8 100644 --- a/src/declarative/fx/qfxlistview.cpp +++ b/src/declarative/fx/qfxlistview.cpp @@ -1396,13 +1396,14 @@ void QFxListView::trackedPositionChanged() case Free: if (d->trackedItem->position() < d->position()) { d->setPosition(d->trackedItem->position()); + d->fixupPosition(); } else if (d->trackedItem->endPosition() > d->position() + d->size()) { qreal pos = d->trackedItem->endPosition() - d->size(); if (d->trackedItem->size() > d->size()) pos = d->trackedItem->position(); d->setPosition(pos); + d->fixupPosition(); } - d->fixupPosition(); break; case Snap: if (d->trackedItem->position() < d->startPosition() + d->snapPos) |