Simplify and correct setting of initial directory for wxFilePickerCtrl.
Create wxFileDialog with correct initial directory and default file name from the very beginning instead of updating it later. This makes the code simpler and also actually makes it work as the initial directory setting was overwritten by setting the default path later even if it didn't contain any directory component. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72451 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -113,46 +113,28 @@ void wxGenericFileDirButton::SetInitialDirectory(const wxString& dir)
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxGenericFileutton
|
||||
// wxGenericFileButton
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void
|
||||
wxGenericFileButton::DoSetInitialDirectory(wxFileDialog* dialog,
|
||||
const wxString& dir)
|
||||
{
|
||||
if ( m_path.find_first_of(wxFileName::GetPathSeparators()) ==
|
||||
wxString::npos )
|
||||
{
|
||||
dialog->SetDirectory(dir);
|
||||
}
|
||||
}
|
||||
|
||||
wxDialog *wxGenericFileButton::CreateDialog()
|
||||
{
|
||||
wxFileDialog* const dialog = new wxFileDialog
|
||||
(
|
||||
GetDialogParent(),
|
||||
m_message,
|
||||
wxEmptyString,
|
||||
wxEmptyString,
|
||||
m_wildcard,
|
||||
GetDialogStyle()
|
||||
);
|
||||
// Determine the initial directory for the dialog: it comes either from the
|
||||
// default path, if it has it, or from the separately specified initial
|
||||
// directory that can be set even if the path is e.g. empty.
|
||||
wxFileName fn(m_path);
|
||||
wxString initialDir = fn.GetPath();
|
||||
if ( initialDir.empty() )
|
||||
initialDir = m_initialDir;
|
||||
|
||||
// If there is no default file or if it doesn't have any path, use the
|
||||
// explicitly set initial directory.
|
||||
//
|
||||
// Notice that it is important to call this before SetPath() below as if we
|
||||
// do have m_initialDir and no directory in m_path, we need to interpret
|
||||
// the path as being relative with respect to m_initialDir.
|
||||
if ( !m_initialDir.empty() )
|
||||
DoSetInitialDirectory(dialog, m_initialDir);
|
||||
|
||||
// This sets both the default file name and the default directory of the
|
||||
// dialog if m_path contains directory part.
|
||||
dialog->SetPath(m_path);
|
||||
|
||||
return dialog;
|
||||
return new wxFileDialog
|
||||
(
|
||||
GetDialogParent(),
|
||||
m_message,
|
||||
initialDir,
|
||||
fn.GetFullName(),
|
||||
m_wildcard,
|
||||
GetDialogStyle()
|
||||
);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user