/// <summary> /// Detaches specified control from this one. /// </summary> /// <param name="child">Child to be removed.</param> /// <param name="dispose">Determines whether the child should be disposed (added to delayed delete queue).</param> public virtual void RemoveChild(Base child, bool dispose) { // If we removed our innerpanel // remove our pointer to it if (m_InnerPanel == child) { m_Children.Remove(m_InnerPanel); m_InnerPanel.DelayedDelete(); m_InnerPanel = null; return; } if (m_InnerPanel != null && m_InnerPanel.Children.Contains(child)) { m_InnerPanel.RemoveChild(child, dispose); return; } m_Children.Remove(child); OnChildRemoved(child); if (dispose) child.DelayedDelete(); }