diff --git a/docs/changes.txt b/docs/changes.txt index b7880e5327..5ab0e195d7 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -580,6 +580,8 @@ Major new features in this release All (GUI): - Fix several floating point rounding bugs in wxPropertyGrid (Artur Wieczorek). +- Restore support for wxFD_OVERWRITE_PROMPT and wxFD_FILE_MUST_EXIST in + wxGenericFileDialog which was accidentally lost some time ago (Carl Godkin). wxGTK: diff --git a/src/generic/filedlgg.cpp b/src/generic/filedlgg.cpp index 9ec0842c64..98ee38f0fd 100644 --- a/src/generic/filedlgg.cpp +++ b/src/generic/filedlgg.cpp @@ -344,9 +344,35 @@ void wxGenericFileDialog::OnOk( wxCommandEvent &WXUNUSED(event) ) if (selectedFiles.Count() == 0) return; + const wxString& path = selectedFiles[0]; + if (selectedFiles.Count() == 1) { - SetPath( selectedFiles[0] ); + SetPath(path); + } + + // check that the file [doesn't] exist if necessary + if ( HasFdFlag(wxFD_SAVE) && HasFdFlag(wxFD_OVERWRITE_PROMPT) && + wxFileExists(path) ) + { + if ( wxMessageBox + ( + wxString::Format + ( + _("File '%s' already exists, do you really want to overwrite it?"), + path + ), + _("Confirm"), + wxYES_NO + ) != wxYES) + return; + } + else if ( HasFdFlag(wxFD_OPEN) && HasFdFlag(wxFD_FILE_MUST_EXIST) && + !wxFileExists(path) ) + { + wxMessageBox(_("Please choose an existing file."), _("Error"), + wxOK | wxICON_ERROR ); + return; } EndModal(wxID_OK);