From 7093413895ea0c67d895951d06f2dbece363f809 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 2 Jul 2006 01:22:42 +0000 Subject: [PATCH] added ExpandAllChildrne() (patch 1498343) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39929 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + docs/latex/wx/treectrl.tex | 14 ++++++++++++++ include/wx/treectrl.h | 4 ++++ src/common/treebase.cpp | 25 +++++++++++++++++++++++-- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index ab5f4399dc..518391a689 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -152,6 +152,7 @@ All (GUI): - Added wxTextAttr::Merge() (Marcin Simonides). - Added wxTB_NO_TOOLTIPS style (Igor Korot). - Added wxGenericDirCtrl::CollapsePath() (Christian Buhtz). +- Added wxTreeCtrl::ExpandAllChildren() (Christian Buhtz) - Fixed 64-bit issue in wxNotebook causing segfaults on Tru64 Unix. - Made it possible to associate context help to a region of a window. - Added support for tabs in wxRichTextCtrl (Ashish More). diff --git a/docs/latex/wx/treectrl.tex b/docs/latex/wx/treectrl.tex index 89f240e011..f609fbed0b 100644 --- a/docs/latex/wx/treectrl.tex +++ b/docs/latex/wx/treectrl.tex @@ -331,6 +331,20 @@ Scrolls and/or expands items to ensure that the given item is visible. Expands the given item. +\membersection{wxTreeCtrl::ExpandAll}\label{wxtreectrlexpandall} + +\func{void}{Expand}{\void} + +Expands all items in the tree. + + +\membersection{wxTreeCtrl::ExpandAllChildren}\label{wxtreectrlexpandallchildren} + +\func{void}{ExpandAllChildren}{\param{const wxTreeItemId\&}{ item}} + +Expands the given item and all its children recursively. + + \membersection{wxTreeCtrl::GetBoundingRect}\label{wxtreectrlgetitemrect} \constfunc{bool}{GetBoundingRect}{\param{const wxTreeItemId\&}{ item}, \param{wxRect\& }{rect}, \param{bool }{textOnly = {\tt false}}} diff --git a/include/wx/treectrl.h b/include/wx/treectrl.h index cbf50e4bc5..e964012a4f 100644 --- a/include/wx/treectrl.h +++ b/include/wx/treectrl.h @@ -287,6 +287,10 @@ public: // expand this item virtual void Expand(const wxTreeItemId& item) = 0; + // expand the item and all its childs and thats childs + void ExpandAllChildren(const wxTreeItemId& item); + // expand all items + void ExpandAll(); // collapse the item without removing its children virtual void Collapse(const wxTreeItemId& item) = 0; // collapse the item and remove all children diff --git a/src/common/treebase.cpp b/src/common/treebase.cpp index 8048795fc5..798ed50d47 100644 --- a/src/common/treebase.cpp +++ b/src/common/treebase.cpp @@ -109,7 +109,7 @@ wxTreeCtrlBase::~wxTreeCtrlBase() static void wxGetBestTreeSize(const wxTreeCtrlBase* treeCtrl, const wxTreeItemId& id, wxSize& size) { wxRect rect; - + if ( treeCtrl->GetBoundingRect(id, rect, true) ) { if ( size.x < rect.x + rect.width ) @@ -134,7 +134,7 @@ wxSize wxTreeCtrlBase::DoGetBestSize() const // this doesn't really compute the total bounding rectangle of all items // but a not too bad guess of it which has the advantage of not having to // examine all (potentially hundreds or thousands) items in the control - + if (GetQuickBestSize()) { for ( wxTreeItemId item = GetRootItem(); @@ -167,5 +167,26 @@ wxSize wxTreeCtrlBase::DoGetBestSize() const return size; } +void wxTreeCtrlBase::ExpandAll() +{ + ExpandAllChildren(GetRootItem()); +} + +void wxTreeCtrlBase::ExpandAllChildren(const wxTreeItemId& item) +{ + // expand this item first, this might result in its children being added on + // the fly + Expand(item); + + // then (recursively) expand all the children + wxTreeItemIdValue cookie; + for ( wxTreeItemId idCurr = GetFirstChild(item, cookie); + idCurr.IsOk(); + idCurr = GetNextChild(item, cookie) ) + { + ExpandAllChildren(idCurr); + } +} + #endif // wxUSE_TREECTRL -- 2.45.2