From 259a3578244864976cbb90ceb6317913dbdc883f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 17 Dec 2017 17:31:09 +0100 Subject: [PATCH] Use index, not value, when removing items from wxDataViewTreeNode This avoids another (linear) search among the item siblings, as we can use the index we've just found instead directly. --- src/generic/datavgen.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 5408794848..0da29eba68 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -471,10 +471,10 @@ public: void InsertChild(wxDataViewTreeNode *node, unsigned index); - void RemoveChild(wxDataViewTreeNode *node) + void RemoveChild(unsigned index) { wxCHECK_RET( m_branchData != NULL, "leaf node doesn't have children" ); - m_branchData->children.Remove(node); + m_branchData->children.RemoveAt(index); } // returns position of child node for given item in children list or wxNOT_FOUND @@ -2835,7 +2835,7 @@ bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent, // Delete the item from wxDataViewTreeNode representation: const int itemsDeleted = 1 + itemNode->GetSubTreeCount(); - parentNode->RemoveChild(itemNode); + parentNode->RemoveChild(itemPosInNode); delete itemNode; parentNode->ChangeSubTreeCount(-itemsDeleted);