on xenial help sign in
Add some explicit layout() calls

There's a few times we actually need to layout now and not later, otherwise a resize event may happen between polish() and updatePolish() is called and the item will be wrongly positioned and the "keep viewport intact" logic will fail

commitff326f55f81cbf6531e9ec4bc6d5fad71b66c687 authorAlbert Astals <albert.astals@canonical.com> dateTue 18 Jun 2013, 11:58 (13 years ago) parent9dc0f9c
2 files changed+13−4
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+12−4 plugins/ListViewWithPageHeader/listviewwithpageheader.h+1
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+12−4
@@ -400,6 +400,7 @@ void ListViewWithPageHeader::viewportMoved(Qt::Orientations orient)
400400 }
401401
402402 m_previousContentY = contentY();
403+ layout();
403404 polish();
404405}
405406
@@ -794,6 +795,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQuickChangeSet &changeSet, bo
794795 }
795796 }
796797
798+ layout();
797799 polish();
798800 m_contentHeightDirty = true;
799801}
@@ -827,6 +829,7 @@ void ListViewWithPageHeader::headerHeightChanged(qreal newHeaderHeight, qreal ol
827829 m_headerItemShownHeight = qBound(static_cast<qreal>(0.), m_headerItemShownHeight, newHeaderHeight);
828830 updateClipItem();
829831 adjustMinYExtent();
832+ layout();
830833 qDebug() << "ListViewWithPageHeader::headerHeightChanged A" << m_minYExtent;
831834 } else {
832835 if (oldHeaderY + oldHeaderHeight > contentY()) {
@@ -862,11 +865,8 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::itemAtIndex(int modelI
862865 return nullptr;
863866}
864867
865−void ListViewWithPageHeader::updatePolish()
868+void ListViewWithPageHeader::layout()
866869{
867− if (!model())
868− return;
869−
870870 if (!m_visibleItems.isEmpty()) {
871871 const qreal visibleFrom = contentY() - m_clipItem->y() + m_headerItemShownHeight;
872872 const qreal visibleTo = contentY() + height() - m_clipItem->y();
@@ -933,6 +933,14 @@ void ListViewWithPageHeader::updatePolish()
933933 }
934934 }
935935 }
936+}
937+
938+void ListViewWithPageHeader::updatePolish()
939+{
940+ if (!model())
941+ return;
942+
943+ layout();
936944
937945 refill();
938946
plugins/ListViewWithPageHeader/listviewwithpageheader.h+1
@@ -102,6 +102,7 @@ private:
102102
103103 void createDelegateModel();
104104
105+ void layout();
105106 void refill();
106107 bool addVisibleItems(qreal fillFrom, qreal fillTo, bool asynchronous);
107108 bool removeNonVisibleItems(qreal bufferFrom, qreal bufferTo);