Stas Sergeev:
1. CollapseDir() was forgetting to... hrmm, to collapse
the dir...
It was only removing the child elements, leaving the dir
expanded. Missing code added.
2. ReCreateTree(), which, according to the comments, must
collapse and re-open the tree, was not re-opening it.
Fixed.
3. For those who used the bogus ReCreateTree() behaviour
to collapse the tree, I added CollapseTree(). This does
visually what the ReCreateTree() wrongly did before the
patch.
4. Documentation is updated accordingly.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33223
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
+\membersection{wxGenericDirCtrl::CollapseTree}\label{wxgenericdirctrlcollapsetree}
+
+\func{void}{CollapseTree}{\void}
+
+Collapses the entire tree.
+
\membersection{wxGenericDirCtrl::ExpandPath}\label{wxgenericdirctrlexpandpath}
\func{bool}{ExpandPath}{\param{const wxString\& }{path}}
\membersection{wxGenericDirCtrl::ExpandPath}\label{wxgenericdirctrlexpandpath}
\func{bool}{ExpandPath}{\param{const wxString\& }{path}}
Returns a pointer to the tree control.
Returns a pointer to the tree control.
+\membersection{wxGenericDirCtrl::ReCreateTree}\label{wxgenericdirctrlrecreatetree}
+
+\func{void}{ReCreateTree}{\void}
+
+Collapse and expand the tree, thus re-creating it from scratch.
+May be used to update the displayed directory content.
+
\membersection{wxGenericDirCtrl::SetDefaultPath}\label{wxgenericdirctrlsetdefaultpath}
\func{void}{SetDefaultPath}{\param{const wxString\& }{path}}
\membersection{wxGenericDirCtrl::SetDefaultPath}\label{wxgenericdirctrlsetdefaultpath}
\func{void}{SetDefaultPath}{\param{const wxString\& }{path}}
// Collapse & expand the tree, thus re-creating it from scratch:
virtual void ReCreateTree();
// Collapse & expand the tree, thus re-creating it from scratch:
virtual void ReCreateTree();
+ // Collapse the entire tree
+ virtual void CollapseTree();
+
+ virtual void ExpandRoot();
virtual void ExpandDir(wxTreeItemId parentId);
virtual void CollapseDir(wxTreeItemId parentId);
virtual const wxTreeItemId AddSection(const wxString& path, const wxString& name, int imageId = 0);
virtual void ExpandDir(wxTreeItemId parentId);
virtual void CollapseDir(wxTreeItemId parentId);
virtual const wxTreeItemId AddSection(const wxString& path, const wxString& name, int imageId = 0);
+void wxGenericDirCtrl::ExpandRoot()
+{
+ ExpandDir(m_rootId); // automatically expand first level
+
+ // Expand and select the default path
+ if (!m_defaultPath.empty())
+ {
+ ExpandPath(m_defaultPath);
+ }
+#ifdef __UNIX__
+ else
+ {
+ // On Unix, there's only one node under the (hidden) root node. It
+ // represents the / path, so the user would always have to expand it;
+ // let's do it ourselves
+ ExpandPath( wxT("/") );
+ }
+#endif
+}
+
bool wxGenericDirCtrl::Create(wxWindow *parent,
const wxWindowID id,
const wxString& dir,
bool wxGenericDirCtrl::Create(wxWindow *parent,
const wxWindowID id,
const wxString& dir,
m_rootId = m_treeCtrl->AddRoot( rootName, 3, -1, rootData);
m_treeCtrl->SetItemHasChildren(m_rootId);
m_rootId = m_treeCtrl->AddRoot( rootName, 3, -1, rootData);
m_treeCtrl->SetItemHasChildren(m_rootId);
- ExpandDir(m_rootId); // automatically expand first level
- // Expand and select the default path
- if (!m_defaultPath.empty())
- {
- ExpandPath(m_defaultPath);
- }
-#ifdef __UNIX__
- else
- {
- // On Unix, there's only one node under the (hidden) root node. It
- // represents the / path, so the user would always have to expand it;
- // let's do it ourselves
- ExpandPath( wxT("/") );
- }
-#endif
SetBestSize(size);
DoResize();
SetBestSize(size);
DoResize();
* handle disappearing children! */
child = m_treeCtrl->GetFirstChild(parentId, cookie);
}
* handle disappearing children! */
child = m_treeCtrl->GetFirstChild(parentId, cookie);
}
+ if (parentId != m_treeCtrl->GetRootItem())
+ m_treeCtrl->Collapse(parentId);
}
void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
}
void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
void wxGenericDirCtrl::ReCreateTree()
{
CollapseDir(m_treeCtrl->GetRootItem());
void wxGenericDirCtrl::ReCreateTree()
{
CollapseDir(m_treeCtrl->GetRootItem());
- ExpandDir(m_treeCtrl->GetRootItem());
+ ExpandRoot();
+}
+
+void wxGenericDirCtrl::CollapseTree()
+{
+ wxTreeItemIdValue cookie;
+ wxTreeItemId child = m_treeCtrl->GetFirstChild(m_rootId, cookie);
+ while (child.IsOk())
+ {
+ CollapseDir(child);
+ child = m_treeCtrl->GetNextChild(m_rootId, cookie);
+ }
}
// Find the child that matches the first part of 'path'.
}
// Find the child that matches the first part of 'path'.