]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/dirctrlg.cpp
removed useless assert from wxArray::Alloc
[wxWidgets.git] / src / generic / dirctrlg.cpp
index 6ee0ef2ab4fa4076bc1c5ed15e0adf8dbeb903ba..6f27f881aab8402a9d2392ae5758a632de3c96d8 100644 (file)
@@ -76,7 +76,6 @@
 #undef GetFirstChild
 #endif
 
-#if !defined(__WXMSW__) || wxUSE_XPM_IN_MSW || wxUSE_XPM_IN_OS2
 /* Closed folder */
 static char * icon1_xpm[] = {
 /* width height ncolors chars_per_pixel */
@@ -298,7 +297,6 @@ static char * icon8_xpm[] = {
 "                ",
 "                ",
 "                "};
-#endif // !wxMSW
 
 static const int ID_DIRCTRL = 1000;
 static const int ID_TEXTCTRL = 1001;
@@ -318,7 +316,11 @@ int setdrive(int drive)
        newdrive[1] = ':';
        newdrive[2] = '\0';
 #if defined(__WXMSW__)
+#ifdef __WIN16__
+    if (wxSetWorkingDirectory(newdrive))
+#else
        if (SetCurrentDirectory((LPSTR)newdrive))
+#endif
 #else
     // VA doesn't know what LPSTR is and has its own set
        if (DosSetCurrentDir((PSZ)newdrive))
@@ -362,6 +364,16 @@ static bool wxIsDriveAvailable(const wxString dirName)
 }
 #endif
 
+// Function which is called by quick sort. We want to override the default wxArrayString behaviour,
+// and sort regardless of case.
+static int LINKAGEMODE wxDirCtrlStringCompareFunction(const void *first, const void *second)
+{
+    wxString *strFirst = (wxString *)first;
+    wxString *strSecond = (wxString *)second;
+    
+    return strFirst->CmpNoCase(*strSecond);
+}
+
 //-----------------------------------------------------------------------------
 // wxDirItemDataEx
 //-----------------------------------------------------------------------------
@@ -450,7 +462,6 @@ bool wxGenericDirCtrl::Create(wxWindow *parent,
         m_filterListCtrl->FillFilterList(filter, defaultFilter);
 
     m_imageList = new wxImageList(16, 16, TRUE);
-#if !defined(__WXMSW__) || wxUSE_XPM_IN_MSW
     m_imageList->Add(wxIcon(icon1_xpm));
     m_imageList->Add(wxIcon(icon2_xpm));
     m_imageList->Add(wxIcon(icon3_xpm));
@@ -459,18 +470,6 @@ bool wxGenericDirCtrl::Create(wxWindow *parent,
     m_imageList->Add(wxIcon(icon6_xpm));
     m_imageList->Add(wxIcon(icon7_xpm));
     m_imageList->Add(wxIcon(icon8_xpm));
-#elif defined(__WXMSW__)
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_CLOSED_FOLDER"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_OPEN_FOLDER"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_FILE"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_COMPUTER"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_DRIVE"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_CDROM"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_FLOPPY"), wxBITMAP_TYPE_ICO_RESOURCE));
-    m_imageList->Add(wxIcon(wxT("wxICON_SMALL_REMOVEABLE"), wxBITMAP_TYPE_ICO_RESOURCE));
-#else
-#error "Sorry, we don't have icons available for this platforms."
-#endif
     m_treeCtrl->SetImageList(m_imageList);
 
     m_showHidden = FALSE;
@@ -758,7 +757,7 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
             while (d.GetNext(& eachFilename)) ;
         }
     }
-    dirs.Sort();
+    dirs.Sort((wxArrayString::CompareFunction) wxDirCtrlStringCompareFunction);
 
     // Now do the filenames -- but only if we're allowed to
     if ((GetWindowStyle() & wxDIRCTRL_DIR_ONLY) == 0)
@@ -781,7 +780,7 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
                 while (d.GetNext(& eachFilename)) ;
             }
         }
-        filenames.Sort();
+        filenames.Sort((wxArrayString::CompareFunction) wxDirCtrlStringCompareFunction);
     }
 
     // Add the sorted dirs