X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ff654490b7cb185631a1dc4621094d88643ccf41..29fbbf8967e4c4b3174a4bc45a9007b92ecb0de7:/src/generic/dirctrlg.cpp diff --git a/src/generic/dirctrlg.cpp b/src/generic/dirctrlg.cpp index c4bd8118b1..e0be654170 100644 --- a/src/generic/dirctrlg.cpp +++ b/src/generic/dirctrlg.cpp @@ -86,14 +86,14 @@ #endif // __OS2__ #if defined(__WXMAC__) - #include "MoreFilesX.h" +// #include "MoreFilesX.h" #endif #ifdef __BORLANDC__ #include "dos.h" #endif -extern WXDLLEXPORT_DATA(const wxChar) wxFileSelectorDefaultWildcardStr[]; +extern WXDLLEXPORT_DATA(const char) wxFileSelectorDefaultWildcardStr[]; // If compiled under Windows, this macro can cause problems #ifdef GetFirstChild @@ -562,8 +562,6 @@ bool wxGenericDirCtrl::Create(wxWindow *parent, if ((style & wxDIRCTRL_3D_INTERNAL) == 0) treeStyle |= wxNO_BORDER; - else - treeStyle |= wxBORDER_SUNKEN; m_treeCtrl = CreateTreeCtrl(this, wxID_TREECTRL, wxPoint(0,0), GetClientSize(), treeStyle); @@ -666,6 +664,13 @@ void wxGenericDirCtrl::SetupSections() AddSection(paths[n], names[n], icons[n]); } +void wxGenericDirCtrl::SetFocus() +{ + // we don't need focus ourselves, give it to the tree so that the user + // could navigate it + m_treeCtrl->SetFocus(); +} + void wxGenericDirCtrl::OnBeginEditItem(wxTreeEvent &event) { // don't rename the main entry "Sections" @@ -742,6 +747,10 @@ void wxGenericDirCtrl::OnExpandItem(wxTreeEvent &event) m_rootId = m_treeCtrl->GetRootItem(); ExpandDir(parentId); + if ( m_treeCtrl->GetChildrenCount(parentId, false) == 0 ) + { + m_treeCtrl->SetItemHasChildren(parentId, false); + } } void wxGenericDirCtrl::OnCollapseItem(wxTreeEvent &event ) @@ -841,7 +850,7 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) dirs.Sort(wxDirCtrlStringCompareFunction); // Now do the filenames -- but only if we're allowed to - if ((GetWindowStyle() & wxDIRCTRL_DIR_ONLY) == 0) + if (!HasFlag(wxDIRCTRL_DIR_ONLY)) { d.Open(dirName); @@ -888,20 +897,16 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) m_treeCtrl->SetItemImage( id, wxFileIconsTable::folder_open, wxTreeItemIcon_Expanded ); - // Has this got any children? If so, make it expandable. - // (There are two situations when a dir has children: either it - // has subdirectories or it contains files that weren't filtered - // out. The latter only applies to dirctrl with files.) - if ( dir_item->HasSubDirs() || - (((GetWindowStyle() & wxDIRCTRL_DIR_ONLY) == 0) && - dir_item->HasFiles(m_currentFilterStr)) ) - { - m_treeCtrl->SetItemHasChildren(id); - } + // 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 + // the user really tries to open this item + m_treeCtrl->SetItemHasChildren(id); } // Add the sorted filenames - if ((GetWindowStyle() & wxDIRCTRL_DIR_ONLY) == 0) + if (!HasFlag(wxDIRCTRL_DIR_ONLY)) { for (i = 0; i < filenames.GetCount(); i++) { @@ -1016,7 +1021,7 @@ bool wxGenericDirCtrl::ExpandPath(const wxString& path) { m_treeCtrl->Expand(lastId); } - if ((GetWindowStyle() & wxDIRCTRL_SELECT_FIRST) && data->m_isDir) + if (HasFlag(wxDIRCTRL_SELECT_FIRST) && data->m_isDir) { // Find the first file in this directory wxTreeItemIdValue cookie;