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:
Václav Slavík 2012-11-13 12:36:32 +00:00
parent c7619cf139
commit ab49aec91a

View File

@ -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;
}
}