summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2009-08-27 05:33:12 (GMT)
committerMartin Jones <martin.jones@nokia.com>2009-08-27 05:33:12 (GMT)
commitb99fd8c53ed7ed73d9bab171918829ba0911810a (patch)
tree64a5fce3cb8266e3f5ffe90e08cdf86d5b84187a /src/declarative
parent30f011823f0acacdfb3380a6ae52f05e2c8cdd6a (diff)
downloadQt-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.cpp19
-rw-r--r--src/declarative/fx/qfxlistview.cpp3
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)