@@ -636,13 +636,19 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
636 if (prevItem) {
636 if (prevItem) {
637 listItem->setY(prevItem->y() + prevItem->height());
637 listItem->setY(prevItem->y() + prevItem->height());
639+ ListItem *currItem = itemAtIndex(modelIndex);
641+ // There's something already in m_visibleItems at out index, meaning this is an insert, so attach to its top
642+ listItem->setY(currItem->y() - listItem ->height());
639− ListItem *nextItem = itemAtIndex(modelIndex + 1);
644+ ListItem *nextItem = itemAtIndex(modelIndex + 1);
640− if (nextItem) {
645+ if (nextItem) {
641− listItem->setY(nextItem->y() - listItem ->height());
646+ listItem->setY(nextItem->y() - listItem ->height());
642− } else if (modelIndex == 0 && m_headerItem) {
647+ } else if (modelIndex == 0 && m_headerItem) {
643− listItem->setY(m_headerItem->height());
648+ listItem->setY(m_headerItem->height());
644− } else if (!m_visibleItems.isEmpty()) {
649+ } else if (!m_visibleItems.isEmpty()) {
645− lostItem = true;
650+ lostItem = true;
648 if (lostItem) {
654 if (lostItem) {
@@ -707,7 +713,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQuickChangeSet &changeSet, bo
707 const auto oldFirstVisibleIndex = m_firstVisibleIndex;
713 const auto oldFirstVisibleIndex = m_firstVisibleIndex;
709 foreach(const QQuickChangeSet::Remove &remove, changeSet.removes()) {
715 foreach(const QQuickChangeSet::Remove &remove, changeSet.removes()) {
710−// qDebug() << "ListViewWithPageHeader::onModelUpdated Remove" << remove;
716+// qDebug() << "ListViewWithPageHeader::onModelUpdated Remove" << remove.index << remove.count;
711 if (remove.index + remove.count > m_firstVisibleIndex && remove.index < m_firstVisibleIndex + m_visibleItems.count()) {
717 if (remove.index + remove.count > m_firstVisibleIndex && remove.index < m_firstVisibleIndex + m_visibleItems.count()) {
712 const qreal oldFirstValidIndexPos = m_visibleItems.first()->y();
718 const qreal oldFirstValidIndexPos = m_visibleItems.first()->y();
713 // If all the items we are removing are either not created or culled
719 // If all the items we are removing are either not created or culled