@@ -97,11 +97,7 @@
97#include <qqmlengine.h>
97#include <qqmlengine.h>
98#pragma GCC diagnostic push
98#pragma GCC diagnostic push
99#pragma GCC diagnostic ignored "-pedantic"
99#pragma GCC diagnostic ignored "-pedantic"
100−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
101−#include <private/qquickvisualdatamodel_p.h>
103#include <private/qqmldelegatemodel_p.h>
100#include <private/qqmldelegatemodel_p.h>
105#include <private/qqmlglobal_p.h>
101#include <private/qqmlglobal_p.h>
106#include <private/qquickitem_p.h>
102#include <private/qquickitem_p.h>
107#include <private/qquickanimation_p.h>
103#include <private/qquickanimation_p.h>
@@ -142,6 +138,13 @@ void ListViewWithPageHeader::ListItem::setCulled(bool culled)
142 QQuickItemPrivate::get(m_sectionItem)->setCulled(culled);
138 QQuickItemPrivate::get(m_sectionItem)->setCulled(culled);
141+void ListViewWithPageHeader::ListItem::setSectionItem(QQuickItem *sectionItem)
143+ m_sectionItem = sectionItem;
144+ QQmlContext *context = QQmlEngine::contextForObject(m_item)->parentContext();
145+ context->setContextProperty(QLatin1String("hasSectionHeader"), QVariant::fromValue<bool>(sectionItem != nullptr));
145ListViewWithPageHeader::ListViewWithPageHeader()
148ListViewWithPageHeader::ListViewWithPageHeader()
146 : m_delegateModel(nullptr)
149 : m_delegateModel(nullptr)
147 , m_asyncRequestedIndex(-1)
150 , m_asyncRequestedIndex(-1)
@@ -191,17 +194,10 @@ void ListViewWithPageHeader::setModel(QAbstractItemModel *model)
191 if (!m_delegateModel) {
194 if (!m_delegateModel) {
192 createDelegateModel();
195 createDelegateModel();
194−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
195− disconnect(m_delegateModel, SIGNAL(modelUpdated(QQuickChangeSet,bool)), this, SLOT(onModelUpdated(QQuickChangeSet,bool)));
197− m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
198− connect(m_delegateModel, SIGNAL(modelUpdated(QQuickChangeSet,bool)), this, SLOT(onModelUpdated(QQuickChangeSet,bool)));
200 disconnect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
197 disconnect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
202 m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
199 m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
203 connect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
200 connect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
205 Q_EMIT modelChanged();
201 Q_EMIT modelChanged();
206 polish();
202 polish();
@@ -433,7 +429,7 @@ bool ListViewWithPageHeader::maximizeVisibleArea(int modelIndex, int itemHeight)
434 ListItem *listItem = itemAtIndex(modelIndex);
430 ListItem *listItem = itemAtIndex(modelIndex);
435 if (listItem) {
431 if (listItem) {
436− return maximizeVisibleArea(listItem, itemHeight + (listItem->m_sectionItem ? listItem->m_sectionItem->height() : 0));
432+ return maximizeVisibleArea(listItem, itemHeight + (listItem->sectionItem() ? listItem->sectionItem()->height() : 0));
439 return false;
435 return false;
@@ -451,7 +447,7 @@ bool ListViewWithPageHeader::maximizeVisibleArea(ListItem *listItem, int listIte
451 contentYAnimationType = ContentYAnimationMaximizeVisibleArea;
447 contentYAnimationType = ContentYAnimationMaximizeVisibleArea;
452 m_contentYAnimation->start();
448 m_contentYAnimation->start();
453 } else if ((listItemY < contentY() && listItemY + listItemHeight < contentY() + height()) ||
449 } else if ((listItemY < contentY() && listItemY + listItemHeight < contentY() + height()) ||
454− (m_topSectionItem && !listItem->m_sectionItem && listItemY - m_topSectionItem->height() < contentY() && listItemY + listItemHeight < contentY() + height()))
450+ (m_topSectionItem && !listItem->sectionItem() && listItemY - m_topSectionItem->height() < contentY() && listItemY + listItemHeight < contentY() + height()))
456 // we can scroll the list down to show more stuff
452 // we can scroll the list down to show more stuff
457 auto realVisibleListItemY = listItemY;
453 auto realVisibleListItemY = listItemY;
@@ -460,7 +456,7 @@ bool ListViewWithPageHeader::maximizeVisibleArea(ListItem *listItem, int listIte
460 // item we have to make sure to scroll it a bit more so that it is not underlapping
456 // item we have to make sure to scroll it a bit more so that it is not underlapping
461 // the top section sticky item
457 // the top section sticky item
462 bool topSectionShown = !QQuickItemPrivate::get(m_topSectionItem)->culled;
458 bool topSectionShown = !QQuickItemPrivate::get(m_topSectionItem)->culled;
463− if (topSectionShown && !listItem->m_sectionItem) {
459+ if (topSectionShown && !listItem->sectionItem()) {
464 realVisibleListItemY -= m_topSectionItem->height();
460 realVisibleListItemY -= m_topSectionItem->height();
@@ -570,13 +566,8 @@ void ListViewWithPageHeader::viewportMoved(Qt::Orientations orient)
571void ListViewWithPageHeader::createDelegateModel()
567void ListViewWithPageHeader::createDelegateModel()
573−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
574− m_delegateModel = new QQuickVisualDataModel(qmlContext(this), this);
575− connect(m_delegateModel, SIGNAL(createdItem(int,QQuickItem*)), this, SLOT(itemCreated(int,QQuickItem*)));
577 m_delegateModel = new QQmlDelegateModel(qmlContext(this), this);
569 m_delegateModel = new QQmlDelegateModel(qmlContext(this), this);
578 connect(m_delegateModel, SIGNAL(createdItem(int,QObject*)), this, SLOT(itemCreated(int,QObject*)));
570 connect(m_delegateModel, SIGNAL(createdItem(int,QObject*)), this, SLOT(itemCreated(int,QObject*)));
580 if (isComponentComplete())
571 if (isComponentComplete())
581 m_delegateModel->componentComplete();
572 m_delegateModel->componentComplete();
582 updateWatchedRoles();
573 updateWatchedRoles();
@@ -657,16 +648,11 @@ bool ListViewWithPageHeader::addVisibleItems(qreal fillFrom, qreal fillTo, bool
657void ListViewWithPageHeader::reallyReleaseItem(ListItem *listItem)
648void ListViewWithPageHeader::reallyReleaseItem(ListItem *listItem)
659 QQuickItem *item = listItem->m_item;
650 QQuickItem *item = listItem->m_item;
660−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
661− QQuickVisualModel::ReleaseFlags flags = m_delegateModel->release(item);
662− if (flags & QQuickVisualModel::Destroyed) {
664 QQmlDelegateModel::ReleaseFlags flags = m_delegateModel->release(item);
651 QQmlDelegateModel::ReleaseFlags flags = m_delegateModel->release(item);
665 if (flags & QQmlDelegateModel::Destroyed) {
652 if (flags & QQmlDelegateModel::Destroyed) {
667 item->setParentItem(nullptr);
653 item->setParentItem(nullptr);
669− delete listItem->m_sectionItem;
655+ delete listItem->sectionItem();
670 delete listItem;
656 delete listItem;
@@ -693,6 +679,9 @@ QQuickItem *ListViewWithPageHeader::getSectionItem(int modelIndex, bool alreadyI
693 return nullptr;
679 return nullptr;
695 const QString section = m_delegateModel->stringValue(modelIndex, m_sectionProperty);
681 const QString section = m_delegateModel->stringValue(modelIndex, m_sectionProperty);
682+ if (section.isEmpty())
696 if (modelIndex > 0) {
685 if (modelIndex > 0) {
697 const QString prevSection = m_delegateModel->stringValue(modelIndex - 1, m_sectionProperty);
686 const QString prevSection = m_delegateModel->stringValue(modelIndex - 1, m_sectionProperty);
698 if (section == prevSection)
687 if (section == prevSection)
@@ -705,8 +694,8 @@ QQuickItem *ListViewWithPageHeader::getSectionItem(int modelIndex, bool alreadyI
705 // Steal the section header
694 // Steal the section header
706 ListItem *nextItem = itemAtIndex(modelIndex); // Not +1 since not yet inserted into m_visibleItems
695 ListItem *nextItem = itemAtIndex(modelIndex); // Not +1 since not yet inserted into m_visibleItems
707 if (nextItem) {
696 if (nextItem) {
708− QQuickItem *sectionItem = nextItem->m_sectionItem;
697+ QQuickItem *sectionItem = nextItem->sectionItem();
709− nextItem->m_sectionItem = nullptr;
698+ nextItem->setSectionItem(nullptr);
710 return sectionItem;
699 return sectionItem;
@@ -796,16 +785,9 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
796 return nullptr;
785 return nullptr;
798 m_asyncRequestedIndex = -1;
787 m_asyncRequestedIndex = -1;
799−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
800− QQuickItem *item = m_delegateModel->item(modelIndex, asynchronous);
802 QObject* object = m_delegateModel->object(modelIndex, asynchronous);
788 QObject* object = m_delegateModel->object(modelIndex, asynchronous);
803 QQuickItem *item = qmlobject_cast<QQuickItem*>(object);
789 QQuickItem *item = qmlobject_cast<QQuickItem*>(object);
805 if (!item) {
790 if (!item) {
806−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
807− m_asyncRequestedIndex = modelIndex;
809 if (object) {
791 if (object) {
810 m_delegateModel->release(object);
792 m_delegateModel->release(object);
811 if (!m_delegateValidated) {
793 if (!m_delegateValidated) {
@@ -816,13 +798,12 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
817 m_asyncRequestedIndex = modelIndex;
799 m_asyncRequestedIndex = modelIndex;
820 return 0;
801 return 0;
822// qDebug() << "ListViewWithPageHeader::createItem::We have the item" << modelIndex << item;
803// qDebug() << "ListViewWithPageHeader::createItem::We have the item" << modelIndex << item;
823 ListItem *listItem = new ListItem;
804 ListItem *listItem = new ListItem;
824 listItem->m_item = item;
805 listItem->m_item = item;
825− listItem->m_sectionItem = getSectionItem(modelIndex, false /*Not yet inserted into m_visibleItems*/);
806+ listItem->setSectionItem(getSectionItem(modelIndex, false /*Not yet inserted into m_visibleItems*/));
826 QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Geometry);
807 QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Geometry);
827 ListItem *prevItem = itemAtIndex(modelIndex - 1);
808 ListItem *prevItem = itemAtIndex(modelIndex - 1);
828 bool lostItem = false; // Is an item that we requested async but because of model changes
809 bool lostItem = false; // Is an item that we requested async but because of model changes
@@ -861,8 +842,8 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
861 m_firstVisibleIndex = modelIndex;
842 m_firstVisibleIndex = modelIndex;
862 polish();
843 polish();
864− if (listItem->m_sectionItem) {
845+ if (listItem->sectionItem()) {
865− QQmlContext *context = QQmlEngine::contextForObject(listItem->m_sectionItem)->parentContext();
846+ QQmlContext *context = QQmlEngine::contextForObject(listItem->sectionItem())->parentContext();
866 context->setContextProperty(QLatin1String("delegateIndex"), modelIndex);
847 context->setContextProperty(QLatin1String("delegateIndex"), modelIndex);
868 adjustMinYExtent();
849 adjustMinYExtent();
@@ -872,10 +853,6 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
875−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
876−void ListViewWithPageHeader::itemCreated(int modelIndex, QQuickItem *item)
879void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
856void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
881 QQuickItem *item = qmlobject_cast<QQuickItem*>(object);
858 QQuickItem *item = qmlobject_cast<QQuickItem*>(object);
@@ -883,7 +860,6 @@ void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
883 qWarning() << "ListViewWithPageHeader::itemCreated got a non item for index" << modelIndex;
860 qWarning() << "ListViewWithPageHeader::itemCreated got a non item for index" << modelIndex;
887// qDebug() << "ListViewWithPageHeader::itemCreated" << modelIndex << item;
863// qDebug() << "ListViewWithPageHeader::itemCreated" << modelIndex << item;
888 // Check we are not being taken down and don't paint anything
864 // Check we are not being taken down and don't paint anything
889 // TODO Check if we still need this in 5.2
865 // TODO Check if we still need this in 5.2
@@ -895,6 +871,7 @@ void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
895 QQmlContext *context = QQmlEngine::contextForObject(item)->parentContext();
871 QQmlContext *context = QQmlEngine::contextForObject(item)->parentContext();
896 context->setContextProperty(QLatin1String("ListViewWithPageHeader"), this);
872 context->setContextProperty(QLatin1String("ListViewWithPageHeader"), this);
897 context->setContextProperty(QLatin1String("heightToClip"), QVariant::fromValue<int>(0));
873 context->setContextProperty(QLatin1String("heightToClip"), QVariant::fromValue<int>(0));
874+ context->setContextProperty(QLatin1String("hasSectionHeader"), QVariant::fromValue<bool>(false));
898 if (modelIndex == m_asyncRequestedIndex) {
875 if (modelIndex == m_asyncRequestedIndex) {
899 createItem(modelIndex, false);
876 createItem(modelIndex, false);
900 refill();
877 refill();
@@ -924,21 +901,13 @@ void ListViewWithPageHeader::onHeightChanged()
927−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
928−void ListViewWithPageHeader::onModelUpdated(const QQuickChangeSet &changeSet, bool /*reset*/)
930void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool /*reset*/)
904void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool /*reset*/)
933 // TODO Do something with reset
906 // TODO Do something with reset
934// qDebug() << "ListViewWithPageHeader::onModelUpdated" << changeSet << reset;
907// qDebug() << "ListViewWithPageHeader::onModelUpdated" << changeSet << reset;
935 const auto oldFirstVisibleIndex = m_firstVisibleIndex;
908 const auto oldFirstVisibleIndex = m_firstVisibleIndex;
937−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
938− Q_FOREACH(const QQuickChangeSet::Remove &remove, changeSet.removes()) {
940 Q_FOREACH(const QQmlChangeSet::Remove &remove, changeSet.removes()) {
910 Q_FOREACH(const QQmlChangeSet::Remove &remove, changeSet.removes()) {
942// qDebug() << "ListViewWithPageHeader::onModelUpdated Remove" << remove.index << remove.count;
911// qDebug() << "ListViewWithPageHeader::onModelUpdated Remove" << remove.index << remove.count;
943 if (remove.index + remove.count > m_firstVisibleIndex && remove.index < m_firstVisibleIndex + m_visibleItems.count()) {
912 if (remove.index + remove.count > m_firstVisibleIndex && remove.index < m_firstVisibleIndex + m_visibleItems.count()) {
944 const qreal oldFirstValidIndexPos = m_visibleItems.first()->y();
913 const qreal oldFirstValidIndexPos = m_visibleItems.first()->y();
@@ -957,11 +926,11 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
957 if (visibleIndex >= 0 && visibleIndex < m_visibleItems.count()) {
926 if (visibleIndex >= 0 && visibleIndex < m_visibleItems.count()) {
958 ListItem *item = m_visibleItems[visibleIndex];
927 ListItem *item = m_visibleItems[visibleIndex];
959 // Pass the section item down if needed
928 // Pass the section item down if needed
960− if (item->m_sectionItem && visibleIndex + 1 < m_visibleItems.count()) {
929+ if (item->sectionItem() && visibleIndex + 1 < m_visibleItems.count()) {
961 ListItem *nextItem = m_visibleItems[visibleIndex + 1];
930 ListItem *nextItem = m_visibleItems[visibleIndex + 1];
962− if (!nextItem->m_sectionItem) {
931+ if (!nextItem->sectionItem()) {
963− nextItem->m_sectionItem = item->m_sectionItem;
932+ nextItem->setSectionItem(item->sectionItem());
964− item->m_sectionItem = nullptr;
933+ item->setSectionItem(nullptr);
967 releaseItem(item);
936 releaseItem(item);
@@ -992,11 +961,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
995−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
996− Q_FOREACH(const QQuickChangeSet::Insert &insert, changeSet.inserts()) {
998 Q_FOREACH(const QQmlChangeSet::Insert &insert, changeSet.inserts()) {
964 Q_FOREACH(const QQmlChangeSet::Insert &insert, changeSet.inserts()) {
1000// qDebug() << "ListViewWithPageHeader::onModelUpdated Insert" << insert.index << insert.count;
965// qDebug() << "ListViewWithPageHeader::onModelUpdated Insert" << insert.index << insert.count;
1001 const bool insertingInValidIndexes = insert.index > m_firstVisibleIndex && insert.index < m_firstVisibleIndex + m_visibleItems.count();
966 const bool insertingInValidIndexes = insert.index > m_firstVisibleIndex && insert.index < m_firstVisibleIndex + m_visibleItems.count();
1002 const bool firstItemWithViewOnTop = insert.index == 0 && m_firstVisibleIndex == 0 && m_visibleItems.first()->y() + m_clipItem->y() > contentY();
967 const bool firstItemWithViewOnTop = insert.index == 0 && m_firstVisibleIndex == 0 && m_visibleItems.first()->y() + m_clipItem->y() > contentY();
@@ -1028,11 +993,11 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
1028 // if we need adding a new section item
993 // if we need adding a new section item
1029 if (m_sectionDelegate) {
994 if (m_sectionDelegate) {
1030 ListItem *nextItem = itemAtIndex(modelIndex + 1);
995 ListItem *nextItem = itemAtIndex(modelIndex + 1);
1031− if (nextItem && !nextItem->m_sectionItem) {
996+ if (nextItem && !nextItem->sectionItem()) {
1032− nextItem->m_sectionItem = getSectionItem(modelIndex + 1, true /* alredy inserted into m_visibleItems*/);
997+ nextItem->setSectionItem(getSectionItem(modelIndex + 1, true /* alredy inserted into m_visibleItems*/));
1033− if (growUp && nextItem->m_sectionItem) {
998+ if (growUp && nextItem->sectionItem()) {
1034 ListItem *firstItem = m_visibleItems.first();
999 ListItem *firstItem = m_visibleItems.first();
1035− firstItem->setY(firstItem->y() - nextItem->m_sectionItem->height());
1000+ firstItem->setY(firstItem->y() - nextItem->sectionItem()->height());
@@ -1054,16 +1019,12 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
1057−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
1058− Q_FOREACH(const QQuickChangeSet::Change &change, changeSet.changes()) {
1060 Q_FOREACH(const QQmlChangeSet::Change &change, changeSet.changes()) {
1022 Q_FOREACH(const QQmlChangeSet::Change &change, changeSet.changes()) {
1062// qDebug() << "ListViewWithPageHeader::onModelUpdated Change" << change.index << change.count;
1023// qDebug() << "ListViewWithPageHeader::onModelUpdated Change" << change.index << change.count;
1063 for (int i = change.index; i < change.count; ++i) {
1024 for (int i = change.index; i < change.count; ++i) {
1064 ListItem *item = itemAtIndex(i);
1025 ListItem *item = itemAtIndex(i);
1065− if (item && item->m_sectionItem) {
1026+ if (item && item->sectionItem()) {
1066− QQmlContext *context = QQmlEngine::contextForObject(item->m_sectionItem)->parentContext();
1027+ QQmlContext *context = QQmlEngine::contextForObject(item->sectionItem())->parentContext();
1067 const QString sectionText = m_delegateModel->stringValue(i, m_sectionProperty);
1028 const QString sectionText = m_delegateModel->stringValue(i, m_sectionProperty);
1068 context->setContextProperty(QLatin1String("section"), sectionText);
1029 context->setContextProperty(QLatin1String("section"), sectionText);
@@ -1076,8 +1037,8 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
1077 for (int i = 0; i < m_visibleItems.count(); ++i) {
1038 for (int i = 0; i < m_visibleItems.count(); ++i) {
1078 ListItem *item = m_visibleItems[i];
1039 ListItem *item = m_visibleItems[i];
1079− if (item->m_sectionItem) {
1040+ if (item->sectionItem()) {
1080− QQmlContext *context = QQmlEngine::contextForObject(item->m_sectionItem)->parentContext();
1041+ QQmlContext *context = QQmlEngine::contextForObject(item->sectionItem())->parentContext();
1081 context->setContextProperty(QLatin1String("delegateIndex"), m_firstVisibleIndex + i);
1042 context->setContextProperty(QLatin1String("delegateIndex"), m_firstVisibleIndex + i);
@@ -1206,18 +1167,18 @@ void ListViewWithPageHeader::layout()
1206 if (topSectionStickPos > pos) {
1167 if (topSectionStickPos > pos) {
1207 showStickySectionItem = true;
1168 showStickySectionItem = true;
1208 } else if (topSectionStickPos == pos) {
1169 } else if (topSectionStickPos == pos) {
1209− showStickySectionItem = !item->m_sectionItem;
1170+ showStickySectionItem = !item->sectionItem();
1210 } else {
1171 } else {
1211 showStickySectionItem = false;
1172 showStickySectionItem = false;
1213 if (!showStickySectionItem) {
1174 if (!showStickySectionItem) {
1214 QQuickItemPrivate::get(m_topSectionItem)->setCulled(true);
1175 QQuickItemPrivate::get(m_topSectionItem)->setCulled(true);
1215− if (item->m_sectionItem) {
1176+ if (item->sectionItem()) {
1216 // This seems it should happen since why would we cull the top section
1177 // This seems it should happen since why would we cull the top section
1217 // if the first visible item has no section header? This only happens briefly
1178 // if the first visible item has no section header? This only happens briefly
1218 // when increasing the height of a list that is at the bottom, the m_topSectionItem
1179 // when increasing the height of a list that is at the bottom, the m_topSectionItem
1219 // gets shown shortly in the next polish call
1180 // gets shown shortly in the next polish call
1220− QQuickItemPrivate::get(item->m_sectionItem)->setCulled(false);
1181+ QQuickItemPrivate::get(item->sectionItem())->setCulled(false);
1222 } else {
1183 } else {
1223 // Update the top sticky section header
1184 // Update the top sticky section header
@@ -1236,14 +1197,14 @@ void ListViewWithPageHeader::layout()
1236 delegateIndex--;
1197 delegateIndex--;
1238 context->setContextProperty(QLatin1String("delegateIndex"), delegateIndex);
1199 context->setContextProperty(QLatin1String("delegateIndex"), delegateIndex);
1239− if (item->m_sectionItem) {
1200+ if (item->sectionItem()) {
1240− QQuickItemPrivate::get(item->m_sectionItem)->setCulled(true);
1201+ QQuickItemPrivate::get(item->sectionItem())->setCulled(true);
1245 QQmlContext *context = QQmlEngine::contextForObject(item->m_item)->parentContext();
1206 QQmlContext *context = QQmlEngine::contextForObject(item->m_item)->parentContext();
1246− const qreal clipFrom = visibleFrom + (!item->m_sectionItem && m_topSectionItem && !QQuickItemPrivate::get(m_topSectionItem)->culled ? m_topSectionItem->height() : 0);
1207+ const qreal clipFrom = visibleFrom + (!item->sectionItem() && m_topSectionItem && !QQuickItemPrivate::get(m_topSectionItem)->culled ? m_topSectionItem->height() : 0);
1247 if (!cull && pos < clipFrom) {
1208 if (!cull && pos < clipFrom) {
1248 context->setContextProperty(QLatin1String("heightToClip"), clipFrom - pos);
1209 context->setContextProperty(QLatin1String("heightToClip"), clipFrom - pos);
1249 } else {
1210 } else {
@@ -1260,7 +1221,7 @@ void ListViewWithPageHeader::layout()
1260 if (firstReallyVisibleItem >= 0) {
1221 if (firstReallyVisibleItem >= 0) {
1261 for (int i = firstReallyVisibleItem - m_firstVisibleIndex + 1; i < m_visibleItems.count(); ++i) {
1222 for (int i = firstReallyVisibleItem - m_firstVisibleIndex + 1; i < m_visibleItems.count(); ++i) {
1262 ListItem *item = m_visibleItems[i];
1223 ListItem *item = m_visibleItems[i];
1263− if (item->m_sectionItem) {
1224+ if (item->sectionItem()) {
1264 if (m_topSectionItem->y() + m_topSectionItem->height() > item->y()) {
1225 if (m_topSectionItem->y() + m_topSectionItem->height() > item->y()) {
1265 m_topSectionItem->setY(item->y() - m_topSectionItem->height());
1226 m_topSectionItem->setY(item->y() - m_topSectionItem->height());