on xenial help sign in
Don't do stuff if our parent is gone

We'll be gone soon too This looks a bit like a workaround, wait for 5.2 better painting/dispatching loop to see if this is not needed anymore, we find a better way to do it, or we decide this is fine

commit81eda2b30af7e7d17d9557330d1e35a3a8e884e7 authorAlbert Astals <albert.astals@canonical.com> dateThu 21 Nov 2013, 10:21 (13 years ago) parent512af88
2 files changed+17−7
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+17 tests/qmltests/Dash/tst_DashContent.qml−7
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+17
@@ -479,6 +479,12 @@ void ListViewWithPageHeader::componentComplete()
479479
480480void ListViewWithPageHeader::viewportMoved(Qt::Orientations orient)
481481{
482+ // Check we are not being taken down and don't paint anything
483+ // TODO Check if we still need this in 5.2
484+ // For reproduction just inifnite loop testDash or testDashContent
485+ if (!QQmlEngine::contextForObject(this)->parentContext())
486+ return;
487+
482488 QQuickFlickable::viewportMoved(orient);
483489// qDebug() << "ListViewWithPageHeader::viewportMoved" << contentY();
484490 qreal diff = m_previousContentY - contentY();
@@ -855,6 +861,11 @@ void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
855861 }
856862#endif
857863// qDebug() << "ListViewWithPageHeader::itemCreated" << modelIndex << item;
864+ // Check we are not being taken down and don't paint anything
865+ // TODO Check if we still need this in 5.2
866+ // For reproduction just inifnite loop testDash or testDashContent
867+ if (!QQmlEngine::contextForObject(this)->parentContext())
868+ return;
858869
859870 item->setParentItem(m_clipItem);
860871 QQmlContext *context = QQmlEngine::contextForObject(item)->parentContext();
@@ -1235,6 +1246,12 @@ void ListViewWithPageHeader::layout()
12351246
12361247void ListViewWithPageHeader::updatePolish()
12371248{
1249+ // Check we are not being taken down and don't paint anything
1250+ // TODO Check if we still need this in 5.2
1251+ // For reproduction just inifnite loop testDash or testDashContent
1252+ if (!QQmlEngine::contextForObject(this)->parentContext())
1253+ return;
1254+
12381255 Q_FOREACH(ListItem *item, m_itemsToRelease)
12391256 reallyReleaseItem(item);
12401257 m_itemsToRelease.clear();
tests/qmltests/Dash/tst_DashContent.qml−7
@@ -125,13 +125,6 @@ Item {
125125
126126 var dashContentList = findChild(dashContent, "dashContentList");
127127 verify(dashContentList != undefined);
128− // TODO For Qt 5.2 remove this wait
129− // and the tryCompare and see if it still crashes when
130− // looping the test
131− wait(1000);
132− if (dashContentList.currentItem !== null) {
133− tryCompare(dashContentList.currentItem, "moving", false);
134− }
135128 scopesModel.clear();
136129 // wait for dash to empty scopes.
137130 tryCompare(dashContentList, "count", 0);