@@ -392,18 +392,32 @@ QQuickItem *ListViewWithPageHeader::item(int modelIndex) const
392bool ListViewWithPageHeader::maximizeVisibleArea(int modelIndex)
392bool ListViewWithPageHeader::maximizeVisibleArea(int modelIndex)
394 ListItem *listItem = itemAtIndex(modelIndex);
394 ListItem *listItem = itemAtIndex(modelIndex);
395+ return maximizeVisibleArea(listItem, listItem->height());
398+bool ListViewWithPageHeader::maximizeVisibleArea(int modelIndex, int itemHeight)
400+ ListItem *listItem = itemAtIndex(modelIndex);
395− if (listItem)
401+ if (listItem) {
396− {
402+ return maximizeVisibleArea(listItem, itemHeight + (listItem->m_sectionItem ? listItem->m_sectionItem->height() : 0));
408+bool ListViewWithPageHeader::maximizeVisibleArea(ListItem *listItem, int listItemHeight)
397 layout();
411 layout();
398 const auto listItemY = m_clipItem->y() + listItem->y();
412 const auto listItemY = m_clipItem->y() + listItem->y();
399− if (listItemY > contentY() && listItemY + listItem->height() > contentY() + height()) {
413+ if (listItemY > contentY() && listItemY + listItemHeight > contentY() + height()) {
400 // we can scroll the list up to show more stuff
414 // we can scroll the list up to show more stuff
401− const auto to = qMin(listItemY, listItemY + listItem->height() - height());
415+ const auto to = qMin(listItemY, listItemY + listItemHeight - height());
402 m_contentYAnimation->setTo(to);
416 m_contentYAnimation->setTo(to);
403 contentYAnimationType = ContentYAnimationMaximizeVisibleArea;
417 contentYAnimationType = ContentYAnimationMaximizeVisibleArea;
404 m_contentYAnimation->start();
418 m_contentYAnimation->start();
405− } else if ((listItemY < contentY() && listItemY + listItem->height() < contentY() + height()) ||
419+ } else if ((listItemY < contentY() && listItemY + listItemHeight < contentY() + height()) ||
406− (m_topSectionItem && !listItem->m_sectionItem && listItemY - m_topSectionItem->height() < contentY() && listItemY + listItem->height() < contentY() + height()))
420+ (m_topSectionItem && !listItem->m_sectionItem && listItemY - m_topSectionItem->height() < contentY() && listItemY + listItemHeight < contentY() + height()))
408 // we can scroll the list down to show more stuff
422 // we can scroll the list down to show more stuff
409 auto realVisibleListItemY = listItemY;
423 auto realVisibleListItemY = listItemY;
@@ -416,7 +430,7 @@ bool ListViewWithPageHeader::maximizeVisibleArea(int modelIndex)
416 realVisibleListItemY -= m_topSectionItem->height();
430 realVisibleListItemY -= m_topSectionItem->height();
419− const auto to = qMax(realVisibleListItemY, listItemY + listItem->height() - height());
433+ const auto to = qMax(realVisibleListItemY, listItemY + listItemHeight - height());
420 m_contentYAnimation->setTo(to);
434 m_contentYAnimation->setTo(to);
421 contentYAnimationType = ContentYAnimationMaximizeVisibleArea;
435 contentYAnimationType = ContentYAnimationMaximizeVisibleArea;
422 m_contentYAnimation->start();
436 m_contentYAnimation->start();