Fix wxGTK's wxFileDialog:Get/SetFilename() to be in sync.
The m_fileName and m_dir variables, managed by the base class, were out of sync when the dialog wasn't shown yet, because the wxGTK implementation didn't always set them. GetFilename() following SetFilename(x) could return something other than x. Fixed by calling the base class version. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72948 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
c7619cf139
commit
ab49aec91a
@ -385,6 +385,8 @@ void wxFileDialog::SetMessage(const wxString& message)
|
||||
|
||||
void wxFileDialog::SetPath(const wxString& path)
|
||||
{
|
||||
wxFileDialogBase::SetPath(path);
|
||||
|
||||
// Don't do anything if no path is specified, in particular don't set the
|
||||
// path to m_dir below as this would result in opening the dialog in the
|
||||
// parent directory of this one instead of m_dir itself.
|
||||
@ -401,12 +403,9 @@ void wxFileDialog::SetPath(const wxString& path)
|
||||
|
||||
void wxFileDialog::SetDirectory(const wxString& dir)
|
||||
{
|
||||
if (m_fc.SetDirectory( dir ))
|
||||
{
|
||||
// Cache the dir, as gtk_file_chooser_get_current_folder()
|
||||
// doesn't return anything until the dialog has been shown
|
||||
m_dir = dir;
|
||||
}
|
||||
wxFileDialogBase::SetDirectory(dir);
|
||||
|
||||
m_fc.SetDirectory(dir);
|
||||
}
|
||||
|
||||
wxString wxFileDialog::GetDirectory() const
|
||||
@ -423,10 +422,11 @@ wxString wxFileDialog::GetDirectory() const
|
||||
|
||||
void wxFileDialog::SetFilename(const wxString& name)
|
||||
{
|
||||
wxFileDialogBase::SetFilename(name);
|
||||
|
||||
if (HasFdFlag(wxFD_SAVE))
|
||||
{
|
||||
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(m_widget), wxGTK_CONV(name));
|
||||
m_fileName = name;
|
||||
}
|
||||
|
||||
else
|
||||
@ -438,7 +438,6 @@ void wxFileDialog::SetFilename(const wxString& name)
|
||||
return;
|
||||
}
|
||||
SetPath(wxFileName(path, name).GetFullPath());
|
||||
m_fileName = name;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user