made absence of wxCHANGE_DIR flag work even under NT (slightly modified patch 1299298)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35661 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -5,10 +5,15 @@ wxWidgets Change Log - For more verbose changes, see the manual
|
|||||||
2.7.0
|
2.7.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
wxMSW:
|
||||||
|
|
||||||
|
- wxFileDialog respects absence of wxCHANGE_DIR flag under NT (Brad Anderson)
|
||||||
|
|
||||||
Unix:
|
Unix:
|
||||||
|
|
||||||
- NO_GCC_PRAGMA is not used any more, remove checks for it if you used it
|
- NO_GCC_PRAGMA is not used any more, remove checks for it if you used it
|
||||||
|
|
||||||
|
|
||||||
2.6.2
|
2.6.2
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
@@ -257,7 +257,8 @@ int wxFileDialog::ShowModal()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if wxCHANGE_DIR flag is not given we shouldn't change the CWD which the
|
// if wxCHANGE_DIR flag is not given we shouldn't change the CWD which the
|
||||||
// standard dialog does by default
|
// standard dialog does by default (notice that under NT it does it anyhow,
|
||||||
|
// OFN_NOCHANGEDIR or not, see below)
|
||||||
if ( !(m_dialogStyle & wxCHANGE_DIR) )
|
if ( !(m_dialogStyle & wxCHANGE_DIR) )
|
||||||
{
|
{
|
||||||
msw_flags |= OFN_NOCHANGEDIR;
|
msw_flags |= OFN_NOCHANGEDIR;
|
||||||
@@ -387,6 +388,9 @@ int wxFileDialog::ShowModal()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// store off before the standard windows dialog can possibly change it
|
||||||
|
const wxString cwdOrig = wxGetCwd();
|
||||||
|
|
||||||
//== Execute FileDialog >>=================================================
|
//== Execute FileDialog >>=================================================
|
||||||
|
|
||||||
bool success = (m_dialogStyle & wxSAVE ? GetSaveFileName(&of)
|
bool success = (m_dialogStyle & wxSAVE ? GetSaveFileName(&of)
|
||||||
@@ -394,6 +398,19 @@ int wxFileDialog::ShowModal()
|
|||||||
|
|
||||||
DWORD errCode = CommDlgExtendedError();
|
DWORD errCode = CommDlgExtendedError();
|
||||||
|
|
||||||
|
// GetOpenFileName will always change the current working directory on
|
||||||
|
// (according to MSDN) "Windows NT 4.0/2000/XP" because the flag
|
||||||
|
// OFN_NOCHANGEDIR has no effect. If the user did not specify wxCHANGE_DIR
|
||||||
|
// let's restore the current working directory to what it was before the
|
||||||
|
// dialog was shown (assuming this behavior extends to Windows Server 2003
|
||||||
|
// seems safe).
|
||||||
|
if ( success &&
|
||||||
|
(msw_flags & OFN_NOCHANGEDIR) &&
|
||||||
|
wxGetOsVersion() == wxWINDOWS_NT )
|
||||||
|
{
|
||||||
|
wxSetWorkingDirectory(cwdOrig);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
if (!success && (errCode == CDERR_STRUCTSIZE))
|
if (!success && (errCode == CDERR_STRUCTSIZE))
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user