diff options
-rw-r--r-- | src/declarative/items/qsglistview.cpp | 4 | ||||
-rw-r--r-- | src/qtquick1/graphicsitems/qdeclarativelistview.cpp | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/declarative/items/qsglistview.cpp b/src/declarative/items/qsglistview.cpp index e1623390f8..c8e8817f95 100644 --- a/src/declarative/items/qsglistview.cpp +++ b/src/declarative/items/qsglistview.cpp @@ -434,6 +434,7 @@ qreal QSGListViewPrivate::snapPosAt(qreal pos) FxViewItem *QSGListViewPrivate::snapItemAt(qreal pos) { FxViewItem *snapItem = 0; + qreal prevItemSize = 0; for (int i = 0; i < visibleItems.count(); ++i) { FxViewItem *item = visibleItems.at(i); if (item->index == -1) @@ -441,8 +442,9 @@ FxViewItem *QSGListViewPrivate::snapItemAt(qreal pos) qreal itemTop = item->position(); if (highlight && itemTop >= pos && item->endPosition() <= pos + highlight->size()) return item; - if (itemTop+item->size()/2 >= pos && itemTop-item->size()/2 < pos) + if (itemTop+item->size()/2 >= pos && itemTop-prevItemSize/2 < pos) snapItem = item; + prevItemSize = item->size(); } return snapItem; } diff --git a/src/qtquick1/graphicsitems/qdeclarativelistview.cpp b/src/qtquick1/graphicsitems/qdeclarativelistview.cpp index 244a2b83fc..bc06f9b2fe 100644 --- a/src/qtquick1/graphicsitems/qdeclarativelistview.cpp +++ b/src/qtquick1/graphicsitems/qdeclarativelistview.cpp @@ -446,6 +446,7 @@ public: FxListItem1 *snapItemAt(qreal pos) { FxListItem1 *snapItem = 0; + qreal prevItemSize = 0; for (int i = 0; i < visibleItems.count(); ++i) { FxListItem1 *item = visibleItems[i]; if (item->index == -1) @@ -453,8 +454,9 @@ public: qreal itemTop = item->position(); if (highlight && itemTop >= pos && item->endPosition() <= pos + highlight->size() - 1) return item; - if (itemTop+item->size()/2 >= pos && itemTop-item->size()/2 < pos) + if (itemTop+item->size()/2 >= pos && itemTop-prevItemSize/2 < pos) snapItem = item; + prevItemSize = item->size(); } return snapItem; } |