From dd3646fd302ad7ee05b5848ecd5dc03444048ca7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 24 Mar 1999 21:56:08 +0000 Subject: [PATCH] CollapseAndReset() fixed git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1969 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/treectrl/treetest.cpp | 13 ++++++++++--- samples/treectrl/treetest.h | 2 ++ src/msw/treectrl.cpp | 8 +++++--- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/samples/treectrl/treetest.cpp b/samples/treectrl/treetest.cpp index 628f84ce8e..577deecd6e 100644 --- a/samples/treectrl/treetest.cpp +++ b/samples/treectrl/treetest.cpp @@ -61,6 +61,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(TreeTest_DeleteChildren, MyFrame::OnDeleteChildren) EVT_MENU(TreeTest_DeleteAll, MyFrame::OnDeleteAll) EVT_MENU(TreeTest_Recreate, MyFrame::OnRecreate) + EVT_MENU(TreeTest_CollapseAndReset, MyFrame::OnCollapseAndReset) EVT_MENU(TreeTest_EnsureVisible, MyFrame::OnEnsureVisible) END_EVENT_TABLE() @@ -119,6 +120,7 @@ MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) tree_menu->Append(TreeTest_Dump, "D&ump tree items"); tree_menu->Append(TreeTest_Recreate, "&Recreate the tree"); + tree_menu->Append(TreeTest_CollapseAndReset, "C&ollapse and reset"); tree_menu->AppendSeparator(); tree_menu->Append(TreeTest_Delete, "&Delete this item"); tree_menu->Append(TreeTest_DeleteChildren, "Delete &children"); @@ -265,6 +267,11 @@ void MyFrame::OnRecreate(wxCommandEvent& event) m_treeCtrl->AddTestItemsToTree(3, 2); } +void MyFrame::OnCollapseAndReset(wxCommandEvent& event) +{ + m_treeCtrl->CollapseAndReset(m_treeCtrl->GetRootItem()); +} + void MyFrame::OnEnsureVisible(wxCommandEvent& event) { m_treeCtrl->DoEnsureVisible(); @@ -409,11 +416,11 @@ void MyTreeCtrl::OnItemCollapsing(wxTreeEvent& event) { wxLogMessage("OnItemCollapsing"); - // for testing, prevent the user from collapsing the root item + // for testing, prevent the user from collapsing the first child folder wxTreeItemId itemId = event.GetItem(); - if ( !GetParent(itemId).IsOk() ) + if ( GetParent(itemId) == GetRootItem() && !GetPrevSibling(itemId) ) { - wxMessageBox("You can't collapse the root item."); + wxMessageBox("You can't collapse this item."); event.Veto(); } diff --git a/samples/treectrl/treetest.h b/samples/treectrl/treetest.h index e51e97389b..8c987b847b 100644 --- a/samples/treectrl/treetest.h +++ b/samples/treectrl/treetest.h @@ -105,6 +105,7 @@ public: void OnDeleteChildren(wxCommandEvent& event); void OnDeleteAll(wxCommandEvent& event); void OnRecreate(wxCommandEvent& event); + void OnCollapseAndReset(wxCommandEvent& event); void OnSetBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(TRUE); } void OnClearBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(FALSE); } @@ -140,6 +141,7 @@ enum TreeTest_DeleteChildren, TreeTest_DeleteAll, TreeTest_Recreate, + TreeTest_CollapseAndReset, TreeTest_EnsureVisible, TreeTest_Ctrl = 100 }; diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp index 0446ef1aed..eb6dfc4977 100644 --- a/src/msw/treectrl.cpp +++ b/src/msw/treectrl.cpp @@ -671,8 +671,10 @@ void wxTreeCtrl::DeleteAllItems() void wxTreeCtrl::DoExpand(const wxTreeItemId& item, int flag) { - wxASSERT_MSG( flag == TVE_COLLAPSE || flag == TVE_COLLAPSERESET || - flag == TVE_EXPAND || flag == TVE_TOGGLE, + wxASSERT_MSG( flag == TVE_COLLAPSE || + flag == (TVE_COLLAPSE | TVE_COLLAPSERESET) || + flag == TVE_EXPAND || + flag == TVE_TOGGLE, "Unknown flag in wxTreeCtrl::DoExpand" ); // TreeView_Expand doesn't send TVN_ITEMEXPAND(ING) messages, so we must @@ -712,7 +714,7 @@ void wxTreeCtrl::Collapse(const wxTreeItemId& item) void wxTreeCtrl::CollapseAndReset(const wxTreeItemId& item) { - DoExpand(item, TVE_COLLAPSERESET); + DoExpand(item, TVE_COLLAPSE | TVE_COLLAPSERESET); } void wxTreeCtrl::Toggle(const wxTreeItemId& item) -- 2.45.2