From d9d05bc2217ddf9e20161ffeb061a9ecd70feea4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 14 Aug 2018 17:24:08 +0200 Subject: [PATCH] Document that wxTreeCtrl::DeleteChildren() does send events Contrary to what the documentation stated previously, this function does generate the wxEVT_TREE_DELETE_ITEM events for all the items being deleted, in both MSW and generic implementations. Update the documentation and add a new unit test checking that the behaviour really conforms to it. --- interface/wx/treectrl.h | 6 ++++-- tests/controls/treectrltest.cpp | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/interface/wx/treectrl.h b/interface/wx/treectrl.h index 246165055d..bf52ba9e78 100644 --- a/interface/wx/treectrl.h +++ b/interface/wx/treectrl.h @@ -317,8 +317,10 @@ public: virtual void DeleteAllItems(); /** - Deletes all children of the given item (but not the item itself). Note - that this will @b not generate any events unlike Delete() method. + Deletes all children of the given item (but not the item itself). + + A @c wxEVT_TREE_DELETE_ITEM event will be generated for every item + being deleted. If you have called SetItemHasChildren(), you may need to call it again since DeleteChildren() does not automatically clear the setting. diff --git a/tests/controls/treectrltest.cpp b/tests/controls/treectrltest.cpp index 6f8e8ff514..1bf179deae 100644 --- a/tests/controls/treectrltest.cpp +++ b/tests/controls/treectrltest.cpp @@ -45,6 +45,7 @@ private: CPPUNIT_TEST_SUITE( TreeCtrlTestCase ); WXUISIM_TEST( ItemClick ); CPPUNIT_TEST( DeleteItem ); + CPPUNIT_TEST( DeleteChildren ); WXUISIM_TEST( LabelEdit ); WXUISIM_TEST( KeyDown ); #ifndef __WXGTK__ @@ -72,6 +73,7 @@ private: void ItemClick(); void DeleteItem(); + void DeleteChildren(); void LabelEdit(); void KeyDown(); #ifndef __WXGTK__ @@ -275,6 +277,16 @@ void TreeCtrlTestCase::DeleteItem() CPPUNIT_ASSERT_EQUAL(1, deleteitem.GetCount()); } +void TreeCtrlTestCase::DeleteChildren() +{ + EventCounter deletechildren(m_tree, wxEVT_TREE_DELETE_ITEM); + + m_tree->AppendItem(m_child1, "another grandchild"); + m_tree->DeleteChildren(m_child1); + + CHECK( deletechildren.GetCount() == 2 ); +} + #if wxUSE_UIACTIONSIMULATOR void TreeCtrlTestCase::LabelEdit()