public void Clear() { if (childCount > 0) { // Copy children to a temporary list because removing child elements from // the panel may trigger modifications (DetachFromPanelEvent callback) // of the same list while we are in the foreach loop. var elements = VisualElementListPool.Copy(m_Owner.m_Children); ReleaseChildList(); m_Owner.yogaNode.Clear(); if (m_Owner.requireMeasureFunction) { m_Owner.yogaNode.SetMeasureFunction(m_Owner.Measure); } foreach (VisualElement e in elements) { e.InvokeHierarchyChanged(HierarchyChangeType.Remove); e.hierarchy.SetParent(null); e.m_LogicalParent = null; m_Owner.elementPanel?.OnVersionChanged(e, VersionChangeType.Hierarchy); } VisualElementListPool.Release(elements); m_Owner.IncrementVersion(VersionChangeType.Hierarchy); } }
/// <summary> /// Remove all child elements from this element's contentContainer /// </summary> public void Clear() { if (childCount > 0) { // Copy children to a temporary list because removing child elements from // the panel may trigger modifications (DetachFromPanelEvent callback) // of the same list while we are in the foreach loop. var elements = VisualElementListPool.Copy(m_Owner.m_Children); ReleaseChildList(); m_Owner.yogaNode.Clear(); m_Owner.AssignMeasureFunction(); foreach (VisualElement e in elements) { e.InvokeHierarchyChanged(HierarchyChangeType.Remove); e.hierarchy.SetParent(null); e.m_LogicalParent = null; m_Owner.elementPanel?.OnVersionChanged(e, VersionChangeType.Hierarchy); } if (m_Owner.imguiContainerDescendantCount > 0) { int totalChange = m_Owner.imguiContainerDescendantCount; if (m_Owner.isIMGUIContainer) { totalChange--; } m_Owner.ChangeIMGUIContainerCount(-totalChange); } VisualElementListPool.Release(elements); m_Owner.IncrementVersion(VersionChangeType.Hierarchy); } }