diff options
Diffstat (limited to 'src/declarative/items/qquickgridview.cpp')
-rw-r--r-- | src/declarative/items/qquickgridview.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/declarative/items/qquickgridview.cpp b/src/declarative/items/qquickgridview.cpp index 4d715a9cb2..1d258b1fa6 100644 --- a/src/declarative/items/qquickgridview.cpp +++ b/src/declarative/items/qquickgridview.cpp @@ -182,6 +182,7 @@ public: virtual void setPosition(qreal pos); virtual void layoutVisibleItems(); bool applyInsertionChange(const QDeclarativeChangeSet::Insert &, FxViewItem *, InsertionsResult *); + virtual bool needsRefillForAddedOrRemovedIndex(int index) const; virtual qreal headerSize() const; virtual qreal footerSize() const; @@ -340,9 +341,6 @@ qreal QQuickGridViewPrivate::snapPosAt(qreal pos) const qreal snapPos = 0; if (!visibleItems.isEmpty()) { qreal highlightStart = highlightRangeStart; - if (isRightToLeftTopToBottom()) - highlightStart = highlightRangeEndValid ? -size() + highlightRangeEnd : -size(); - pos += highlightStart; pos += rowSize()/2; snapPos = static_cast<FxGridItemSG*>(visibleItems.first())->rowPos() - visibleIndex / columns * rowSize(); @@ -351,8 +349,8 @@ qreal QQuickGridViewPrivate::snapPosAt(qreal pos) const qreal maxExtent; qreal minExtent; if (isRightToLeftTopToBottom()) { - maxExtent = q->minXExtent(); - minExtent = q->maxXExtent(); + maxExtent = q->minXExtent()-size(); + minExtent = q->maxXExtent()-size(); } else { maxExtent = flow == QQuickGridView::LeftToRight ? -q->maxYExtent() : -q->maxXExtent(); minExtent = flow == QQuickGridView::LeftToRight ? -q->minYExtent() : -q->minXExtent(); @@ -1861,6 +1859,13 @@ bool QQuickGridViewPrivate::applyInsertionChange(const QDeclarativeChangeSet::In return insertResult->addedItems.count() > prevAddedCount; } +bool QQuickGridViewPrivate::needsRefillForAddedOrRemovedIndex(int modelIndex) const +{ + // If we add or remove items before visible items, a layout may be + // required to ensure item 0 is in the first column. + return modelIndex < visibleIndex; +} + /*! \qmlmethod QtQuick2::GridView::positionViewAtIndex(int index, PositionMode mode) |