diff options
-rw-r--r-- | src/declarative/graphicsitems/qmlgraphicslistview.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicslistview.cpp b/src/declarative/graphicsitems/qmlgraphicslistview.cpp index e2eff2b..351364e 100644 --- a/src/declarative/graphicsitems/qmlgraphicslistview.cpp +++ b/src/declarative/graphicsitems/qmlgraphicslistview.cpp @@ -1050,9 +1050,13 @@ void QmlGraphicsListViewPrivate::updateFooter() if (footer) { if (visibleItems.count()) { qreal endPos = endPosition(); - qreal visiblePos = position() + q->height(); - if (endPos <= visiblePos || footer->position() < endPos) + if (lastVisibleIndex() == model->count()-1) { footer->setPosition(endPos); + } else { + qreal visiblePos = position() + q->height(); + if (endPos <= visiblePos || footer->position() < endPos) + footer->setPosition(endPos); + } } else { footer->setPosition(visiblePos); } @@ -1085,8 +1089,12 @@ void QmlGraphicsListViewPrivate::updateHeader() if (header) { if (visibleItems.count()) { qreal startPos = startPosition(); - if (position() <= startPos || header->position() > startPos - header->size()) + if (visibleIndex == 0) { header->setPosition(startPos - header->size()); + } else { + if (position() <= startPos || header->position() > startPos - header->size()) + header->setPosition(startPos - header->size()); + } } else { header->setPosition(0); } |