X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e624f5ba66250b2139b1ab504cdf2d4794165d6d..245f35816d761212279e8cf223475efb7a367553:/src/generic/dirctrlg.cpp?ds=inline diff --git a/src/generic/dirctrlg.cpp b/src/generic/dirctrlg.cpp index c1bda3cbd6..566662567f 100644 --- a/src/generic/dirctrlg.cpp +++ b/src/generic/dirctrlg.cpp @@ -79,7 +79,7 @@ #endif #include #include - +extern bool wxIsDriveAvailable(const wxString& dirName); #endif // __WXPM__ #if defined(__WXMAC__) @@ -459,10 +459,14 @@ bool wxGenericDirCtrl::Create(wxWindow *parent, if ((style & wxDIRCTRL_3D_INTERNAL) == 0) treeStyle |= wxNO_BORDER; + else + treeStyle |= wxBORDER_SUNKEN; long filterStyle = 0; if ((style & wxDIRCTRL_3D_INTERNAL) == 0) filterStyle |= wxNO_BORDER; + else + filterStyle |= wxBORDER_SUNKEN; m_treeCtrl = new wxTreeCtrl(this, wxID_TREECTRL, pos, size, treeStyle); @@ -525,13 +529,16 @@ void wxGenericDirCtrl::ShowHidden( bool show ) SetPath(path); } -void wxGenericDirCtrl::AddSection(const wxString& path, const wxString& name, int imageId) +const wxTreeItemId +wxGenericDirCtrl::AddSection(const wxString& path, const wxString& name, int imageId) { wxDirItemData *dir_item = new wxDirItemData(path,name,TRUE); - wxTreeItemId id = m_treeCtrl->AppendItem( m_rootId, name, imageId, -1, dir_item); - + wxTreeItemId id = AppendItem( m_rootId, name, imageId, -1, dir_item); + m_treeCtrl->SetItemHasChildren(id); + + return id; } void wxGenericDirCtrl::SetupSections() @@ -540,7 +547,7 @@ void wxGenericDirCtrl::SetupSections() wxArrayInt icons; size_t n, count = wxGetAvailableDrives(paths, names, icons); - + for (n = 0; n < count; n++) { AddSection(paths[n], names[n], icons[n]); @@ -614,7 +621,9 @@ void wxGenericDirCtrl::OnExpandItem(wxTreeEvent &event) // VS: this is needed because the event handler is called from wxTreeCtrl // ctor when wxTR_HIDE_ROOT was specified - if (m_rootId == 0) + + if (!m_rootId.IsOk()) + m_rootId = m_treeCtrl->GetRootItem(); ExpandDir(parentId); @@ -749,7 +758,7 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) path += eachFilename; wxDirItemData *dir_item = new wxDirItemData(path,eachFilename,TRUE); - wxTreeItemId id = m_treeCtrl->AppendItem( parentId, eachFilename, + wxTreeItemId id = AppendItem( parentId, eachFilename, wxFileIconsTable::folder, -1, dir_item); m_treeCtrl->SetItemImage( id, wxFileIconsTable::folder_open, wxTreeItemIcon_Expanded ); @@ -781,7 +790,7 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId) int image_id = wxFileIconsTable::file; if (eachFilename.Find(wxT('.')) != wxNOT_FOUND) image_id = wxTheFileIconsTable->GetIconID(eachFilename.AfterLast(wxT('.'))); - (void)m_treeCtrl->AppendItem( parentId, eachFilename, image_id, -1, dir_item); + (void) AppendItem( parentId, eachFilename, image_id, -1, dir_item); } } } @@ -1096,6 +1105,26 @@ void wxGenericDirCtrl::OnSize(wxSizeEvent& WXUNUSED(event)) DoResize(); } +wxTreeItemId wxGenericDirCtrl::AppendItem (const wxTreeItemId & parent, + const wxString & text, + int image, int selectedImage, + wxTreeItemData * data) +{ + wxTreeCtrl *treeCtrl = GetTreeCtrl (); + + wxASSERT (treeCtrl); + + if (treeCtrl) + { + return treeCtrl->AppendItem (parent, text, image, selectedImage, data); + } + else + { + return wxTreeItemId(); + } +} + + //----------------------------------------------------------------------------- // wxDirFilterListCtrl //----------------------------------------------------------------------------- @@ -1151,6 +1180,7 @@ void wxDirFilterListCtrl::FillFilterList(const wxString& filter, int defaultFilt } } + // ---------------------------------------------------------------------------- // wxFileIconsTable icons // ---------------------------------------------------------------------------- @@ -1373,7 +1403,6 @@ wxFileIconsTable::~wxFileIconsTable() void wxFileIconsTable::Create() { wxCHECK_RET(!m_smallImageList && !m_HashTable, wxT("creating icons twice")); -printf("creating \n"); fflush(stdout); m_HashTable = new wxHashTable(wxKEY_STRING); m_smallImageList = new wxImageList(16, 16);