[poincare] DynLayout: Do not detach children needing to be deleted

Change-Id: Id46afd541c8090268e7f48f09a07e6cb6240f445
This commit is contained in:
Léa Saviot
2018-05-09 18:03:30 +02:00
parent a5d65deb3e
commit 31dae66dfb
2 changed files with 13 additions and 1 deletions

View File

@@ -35,6 +35,8 @@ public:
protected:
const ExpressionLayout ** m_children;
int m_numberOfChildren;
private:
void removeDetachedChildren();
};
}

View File

@@ -46,7 +46,7 @@ void DynamicLayoutHierarchy::mergeChildrenAtIndex(DynamicLayoutHierarchy * eL, i
}
}
addChildrenAtIndex(eL->children(), eL->numberOfChildren(), indexForInsertion, removeEmptyChildren);
eL->detachChildren();
eL->removeDetachedChildren();
delete eL;
}
@@ -160,4 +160,14 @@ void DynamicLayoutHierarchy::removeAndDeleteChildren() {
m_numberOfChildren = 0;
}
void DynamicLayoutHierarchy::removeDetachedChildren() {
int currentIndex = 0;
for (int i = 0; i < m_numberOfChildren; i++) {
if (m_children[i] != nullptr && m_children[i]->parent() == this) {
m_children[currentIndex++] = m_children[i];
}
}
m_numberOfChildren = currentIndex;
}
}