diff options
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquickitemview.cpp | 4 | ||||
-rw-r--r-- | src/quick/items/qquickitemview_p_p.h | 2 | ||||
-rw-r--r-- | src/quick/items/qquicklistview.cpp | 4 |
3 files changed, 6 insertions, 4 deletions
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index b618daf64b..e301e8f0f2 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -928,7 +928,7 @@ void QQuickItemViewPrivate::positionViewAtIndex(int index, int mode) switch (mode) { case QQuickItemView::Beginning: pos = itemPos; - if (index < 0 && header) + if (header && (index < 0 || hasStickyHeader())) pos -= headerSize(); break; case QQuickItemView::Center: @@ -936,7 +936,7 @@ void QQuickItemViewPrivate::positionViewAtIndex(int index, int mode) break; case QQuickItemView::End: pos = itemPos - size() + item->size(); - if (index >= model->count() && footer) + if (footer && (index >= model->count() || hasStickyFooter())) pos += footerSize(); break; case QQuickItemView::Visible: diff --git a/src/quick/items/qquickitemview_p_p.h b/src/quick/items/qquickitemview_p_p.h index ea1c7c494a..925cffcbd9 100644 --- a/src/quick/items/qquickitemview_p_p.h +++ b/src/quick/items/qquickitemview_p_p.h @@ -336,6 +336,8 @@ protected: virtual bool showFooterForIndex(int index) const = 0; virtual void updateHeader() = 0; virtual void updateFooter() = 0; + virtual bool hasStickyHeader() const { return false; }; + virtual bool hasStickyFooter() const { return false; }; virtual void createHighlight() = 0; virtual void updateHighlight() = 0; diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp index 9f53586893..242fdd2cfa 100644 --- a/src/quick/items/qquicklistview.cpp +++ b/src/quick/items/qquicklistview.cpp @@ -117,8 +117,8 @@ public: bool showFooterForIndex(int index) const Q_DECL_OVERRIDE; void updateHeader() Q_DECL_OVERRIDE; void updateFooter() Q_DECL_OVERRIDE; - bool hasStickyHeader() const; - bool hasStickyFooter() const; + bool hasStickyHeader() const Q_DECL_OVERRIDE; + bool hasStickyFooter() const Q_DECL_OVERRIDE; void changedVisibleIndex(int newIndex) Q_DECL_OVERRIDE; void initializeCurrentItem() Q_DECL_OVERRIDE; |