]> git.saurik.com Git - wxWidgets.git/commitdiff
more fixes to handling the paths with trailing slashes in wxDirDlg
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 5 Apr 2002 10:11:37 +0000 (10:11 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 5 Apr 2002 10:11:37 +0000 (10:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14946 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/dirdlg.h
src/msw/dirdlg.cpp

index d49268d87ffda7efdfd2f7448e0a70f0176b87a1..7d78c2494f7855b4d17a4b8336b78a30ea07128d 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        dirdlg.h
+// Name:        wx/msw/dirdlg.h
 // Purpose:     wxDirDialog class
 // Author:      Julian Smart
 // Modified by:
 
 WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorPromptStr;
 
-class WXDLLEXPORT wxDirDialog: public wxDialog
+class WXDLLEXPORT wxDirDialog : public wxDialog
 {
-DECLARE_DYNAMIC_CLASS(wxDirDialog)
 public:
-    wxDirDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr,
-        const wxString& defaultPath = wxEmptyString,
-        long style = 0, const wxPoint& pos = wxDefaultPosition);
+    wxDirDialog(wxWindow *parent,
+                const wxString& message = wxFileSelectorPromptStr,
+                const wxString& defaultPath = wxEmptyString,
+                long style = 0,
+                const wxPoint& pos = wxDefaultPosition);
 
-    inline void SetMessage(const wxString& message) { m_message = message; }
-    inline void SetPath(const wxString& path) { m_path = path; }
-    inline void SetStyle(long style) { m_dialogStyle = style; }
+    void SetMessage(const wxString& message) { m_message = message; }
+    void SetPath(const wxString& path) { m_path = path; }
+    void SetStyle(long style) { m_dialogStyle = style; }
 
-    inline wxString GetMessage(void) const { return m_message; }
-    inline wxString GetPath(void) const { return m_path; }
-    inline long GetStyle(void) const { return m_dialogStyle; }
+    wxString GetMessage() const { return m_message; }
+    wxString GetPath() const { return m_path; }
+    long GetStyle() const { return m_dialogStyle; }
 
-    int ShowModal(void);
+    virtual int ShowModal();
 
 protected:
     wxString    m_message;
     long        m_dialogStyle;
-    wxWindow *  m_parent;
     wxString    m_path;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxDirDialog)
 };
 
 #endif
index 7e0994ed74b9176f3c0a6c906bc689c3eb6c2e34..0b8885ffd9143af080111b86f4a9bf2f9d305ba5 100644 (file)
@@ -85,20 +85,38 @@ wxDirDialog::wxDirDialog(wxWindow *parent,
 {
     m_message = message;
     m_parent = parent;
-    m_path = defaultPath;
+    
+    SetPath(defaultPath);
+}
+
+void wxDirDialog::SetPath(const wxString& path)
+{
+    m_path = path;
 
     // SHBrowseForFolder doesn't like '/'s nor the trailing backslashes
     m_path.Replace(_T("/"), _T("\\"));
-    if ( *m_path.end() == _T('\\') )
+    if ( !m_path.empty() )
     {
-        m_path.erase(m_path.length() - 1);
+        while ( *(m_path.end() - 1) == _T('\\') )
+        {
+            size_t len = m_path.length();
+            if ( len == 1 )
+            {
+                // leave '/' alone
+                break;
+            }
+
+            m_path.erase(len - 1);
+        }
     }
 }
 
 int wxDirDialog::ShowModal()
 {
+    wxWindow *parent = GetParent();
+
     BROWSEINFO bi;
-    bi.hwndOwner      = m_parent ? GetHwndOf(m_parent) : NULL;
+    bi.hwndOwner      = parent ? GetHwndOf(parent) : NULL;
     bi.pidlRoot       = NULL;
     bi.pszDisplayName = NULL;
     bi.lpszTitle      = m_message.c_str();