on xenial help sign in
Do not refill or layout if we are layouting
commita0e1e0cfd22a9b49de87c20cc30aa81f52bace7f authorAlbert Astals <albert.astals@canonical.com> dateThu 27 Jun 2013, 13:05 (13 years ago) parent9ae41b6
2 files changed+10
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+9 plugins/ListViewWithPageHeader/listviewwithpageheader.h+1
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+9
@@ -145,6 +145,7 @@ ListViewWithPageHeader::ListViewWithPageHeader()
145145 , m_sectionDelegate(nullptr)
146146 , m_topSectionItem(nullptr)
147147 , m_forceNoClip(false)
148+ , m_inLayout(false)
148149{
149150 m_clipItem = new QQuickItem(contentItem());
150151// m_clipItem = new QQuickRectangle(contentItem());
@@ -433,6 +434,9 @@ void ListViewWithPageHeader::createDelegateModel()
433434
434435void ListViewWithPageHeader::refill()
435436{
437+ if (m_inLayout) {
438+ return;
439+ }
436440 if (!isComponentComplete()) {
437441 return;
438442 }
@@ -921,6 +925,10 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::itemAtIndex(int modelI
921925
922926void ListViewWithPageHeader::layout()
923927{
928+ if (m_inLayout)
929+ return;
930+
931+ m_inLayout = true;
924932 if (!m_visibleItems.isEmpty()) {
925933 const qreal visibleFrom = contentY() - m_clipItem->y() + m_headerItemShownHeight;
926934 const qreal visibleTo = contentY() + height() - m_clipItem->y();
@@ -994,6 +1002,7 @@ void ListViewWithPageHeader::layout()
9941002 }
9951003 }
9961004 }
1005+ m_inLayout = false;
9971006}
9981007
9991008void ListViewWithPageHeader::updatePolish()
plugins/ListViewWithPageHeader/listviewwithpageheader.h+1
@@ -150,6 +150,7 @@ private:
150150 QQuickItem *m_topSectionItem;
151151
152152 bool m_forceNoClip;
153+ bool m_inLayout;
153154
154155 // Qt 5.0 doesn't like releasing the items just after itemCreated
155156 // so we delay the releasing until the next updatePolish