void wxTreeListModel::DeleteItem(Node* item) { wxCHECK_RET( item, "Invalid item" ); wxCHECK_RET( item != m_root, "Can't delete the root item" ); Node* const parent = item->GetParent(); ItemDeleted(ToDVI(parent), ToDVI(item)); Node* previous = parent->GetChild(); if ( previous == item ) { parent->DeleteChild(); } else // Not the first child of its parent. { // Find the sibling just before it. for ( ;; ) { Node* const next = previous->GetNext(); if ( next == item ) break; wxCHECK_RET( next, "Item not a child of its parent?" ); previous = next; } previous->DeleteNext(); } }