X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce00f59b5b169752d2f05ce3bb1a88ddc1b38b4c..da2f117200f2933478d571d2d9e6d636dbbd0e4c:/src/generic/dirctrlg.cpp diff --git a/src/generic/dirctrlg.cpp b/src/generic/dirctrlg.cpp index dbaaf19a54..a87c0812ca 100644 --- a/src/generic/dirctrlg.cpp +++ b/src/generic/dirctrlg.cpp @@ -761,14 +761,9 @@ void wxGenericDirCtrl::OnExpandItem(wxTreeEvent &event) // ctor when wxTR_HIDE_ROOT was specified if (!m_rootId.IsOk()) - m_rootId = m_treeCtrl->GetRootItem(); ExpandDir(parentId); - if ( m_treeCtrl->GetChildrenCount(parentId, false) == 0 ) - { - m_treeCtrl->SetItemHasChildren(parentId, false); - } } void wxGenericDirCtrl::OnCollapseItem(wxTreeEvent &event ) @@ -793,7 +788,7 @@ void wxGenericDirCtrl::CollapseDir(wxTreeItemId parentId) m_treeCtrl->Thaw(); } -void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) +void wxGenericDirCtrl::PopulateNode(wxTreeItemId parentId) { wxDirItemData *data = (wxDirItemData *) m_treeCtrl->GetItemData(parentId); @@ -892,6 +887,10 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) filenames.Sort(wxDirCtrlStringCompareFunction); } + // Now we really know whether we have any children so tell the tree control + // about it. + m_treeCtrl->SetItemHasChildren(parentId, !dirs.empty() || !filenames.empty()); + // Add the sorted dirs size_t i; for (i = 0; i < dirs.GetCount(); i++) @@ -911,7 +910,7 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) // assume that it does have children by default as it can take a long // time to really check for this (think remote drives...) // - // and if we're wrong, we'll correct it later in OnExpandItem() if + // and if we're wrong, we'll correct the icon later if // the user really tries to open this item m_treeCtrl->SetItemHasChildren(id); } @@ -936,6 +935,12 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) } } +void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) +{ + // ExpandDir() will not actually expand the tree node, just populate it + PopulateNode(parentId); +} + void wxGenericDirCtrl::ReCreateTree() { CollapseDir(m_treeCtrl->GetRootItem());