]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/filedlg.mm
Fix out of bounds string access in wxMSW wxDirDialog.
[wxWidgets.git] / src / cocoa / filedlg.mm
index 7c74ed924688e743cf13d9bb26ed637c6e1e0342..576ed6920c2332e4b21cf74bb9767eadc72ea5b6 100644 (file)
 
 #if wxUSE_FILEDLG
 
+#include "wx/filedlg.h"
+
 #ifndef WX_PRECOMP
     #include "wx/msgdlg.h"
-    #include "wx/filedlg.h"
-    #include "wx/filename.h"
     #include "wx/app.h"
 #endif
 
+#include "wx/filename.h"
+
 #include "wx/cocoa/autorelease.h"
 #include "wx/cocoa/string.h"
 
@@ -46,11 +48,17 @@ IMPLEMENT_CLASS(wxCocoaFileDialog, wxFileDialogBase)
 // wxFileDialog
 // ----------------------------------------------------------------------------
 
-wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
-        const wxString& defaultDir, const wxString& defaultFileName,
-        const wxString& wildCard, long style, const wxPoint& pos)
-:   wxFileDialogBase(parent, message, defaultDir, defaultFileName,
-        wildCard, style, pos)
+wxFileDialog::wxFileDialog(wxWindow *parent,
+                           const wxString& message,
+                           const wxString& defaultDir,
+                           const wxString& defaultFileName,
+                           const wxString& wildCard,
+                           long style,
+                           const wxPoint& pos,
+                           const wxSize& sz,
+                           const wxString& name)
+            : wxFileDialogBase(parent, message, defaultDir, defaultFileName,
+                               wildCard, style, pos, sz, name)
 {
     wxTopLevelWindows.Append(this);
 
@@ -67,7 +75,7 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
 
     //If the user requests to save - use a NSSavePanel
     //else use a NSOpenPanel
-    if (m_dialogStyle & wxSAVE)
+    if (HasFlag(wxFD_SAVE))
     {
         SetNSPanel([NSSavePanel savePanel]);
 
@@ -86,12 +94,12 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
         // dialogs are all that useful, anyway :)
         //
     }
-    else //m_dialogStyle & wxOPEN
+    else //m_dialogStyle & wxFD_OPEN
     {
         SetNSPanel([NSOpenPanel openPanel]);
         [m_cocoaNSWindow setTitle:wxNSStringWithWxString(message)];
 
-        [(NSOpenPanel*)m_cocoaNSWindow setAllowsMultipleSelection:(m_dialogStyle & wxMULTIPLE)];
+        [(NSOpenPanel*)m_cocoaNSWindow setAllowsMultipleSelection:(HasFlag(wxFD_MULTIPLE))];
         [(NSOpenPanel*)m_cocoaNSWindow setResolvesAliases:YES];
         [(NSOpenPanel*)m_cocoaNSWindow setCanChooseFiles:YES];
         [(NSOpenPanel*)m_cocoaNSWindow setCanChooseDirectories:NO];
@@ -160,8 +168,8 @@ void wxFileDialog::GetPaths(wxArrayString& paths) const
     paths.Empty();
 
     wxString dir(m_dir);
-    if ( m_dir.Last() != _T('\\') )
-        dir += _T('\\');
+    if ( m_dir.Last() != wxT('\\') )
+        dir += wxT('\\');
 
     size_t count = m_fileNames.GetCount();
     for ( size_t n = 0; n < count; n++ )
@@ -181,9 +189,9 @@ void wxFileDialog::GetFilenames(wxArrayString& files) const
 void wxFileDialog::SetPath(const wxString& path)
 {
     wxString ext;
-    wxSplitPath(path, &m_dir, &m_fileName, &ext);
+    wxFileName::SplitPath(path, &m_dir, &m_fileName, &ext);
     if ( !ext.empty() )
-        m_fileName << _T('.') << ext;
+        m_fileName << wxT('.') << ext;
 }
 
 int wxFileDialog::ShowModal()
@@ -194,7 +202,7 @@ int wxFileDialog::ShowModal()
 
     int nResult;
 
-    if (m_dialogStyle & wxSAVE)
+    if (HasFlag(wxFD_SAVE))
     {
         nResult = [GetNSSavePanel()
                     runModalForDirectory:wxNSStringWithWxString(m_dir)
@@ -206,7 +214,7 @@ int wxFileDialog::ShowModal()
             m_path = m_fileNames[0];
         }
     }
-    else //m_dialogStyle & wxOPEN
+    else //m_dialogStyle & wxFD_OPEN
     {
         nResult = [(NSOpenPanel*)m_cocoaNSWindow
                     runModalForDirectory:wxNSStringWithWxString(m_dir)
@@ -228,4 +236,3 @@ int wxFileDialog::ShowModal()
 }
 
 #endif // wxUSE_FILEDLG
-