From: Václav Slavík Date: Tue, 13 Nov 2012 12:36:32 +0000 (+0000) Subject: Fix wxGTK's wxFileDialog:Get/SetFilename() to be in sync. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ab49aec91a9e95616fc5c14a64d82bb052be1bb5 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 --- diff --git a/src/gtk/filedlg.cpp b/src/gtk/filedlg.cpp index c86a7e37e2..28f087c246 100644 --- a/src/gtk/filedlg.cpp +++ b/src/gtk/filedlg.cpp @@ -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; } }