When using SetFilterIndex to indicate a different initial file type the dialog would still use the extension of the first file type (if the filename had no extension then unchecking "Hide extension" would append the first file type's extension). Fixed this by calling code, that formerly got called only from OnFilterSelected, to notify OS X of the file type change.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67598
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
#if wxOSX_USE_COCOA
virtual wxWindow* CreateFilterPanel(wxWindow *extracontrol);
#if wxOSX_USE_COCOA
virtual wxWindow* CreateFilterPanel(wxWindow *extracontrol);
+ void DoOnFilterSelected(int index);
virtual void OnFilterSelected(wxCommandEvent &event);
wxArrayString m_filterExtensions;
virtual void OnFilterSelected(wxCommandEvent &event);
wxArrayString m_filterExtensions;
-// An item has been selected in the file filter wxChoice:
-void wxFileDialog::OnFilterSelected( wxCommandEvent &WXUNUSED(event) )
+void wxFileDialog::DoOnFilterSelected(int index)
- int index = m_filterChoice->GetSelection();
-
NSArray* types = GetTypesFromExtension(m_filterExtensions[index],m_currentExtensions);
NSSavePanel* panel = (NSSavePanel*) GetWXWindow();
if ( m_delegate )
NSArray* types = GetTypesFromExtension(m_filterExtensions[index],m_currentExtensions);
NSSavePanel* panel = (NSSavePanel*) GetWXWindow();
if ( m_delegate )
[panel setAllowedFileTypes:types];
}
[panel setAllowedFileTypes:types];
}
+// An item has been selected in the file filter wxChoice:
+void wxFileDialog::OnFilterSelected( wxCommandEvent &WXUNUSED(event) )
+{
+ DoOnFilterSelected( m_filterChoice->GetSelection() );
+}
+
bool wxFileDialog::CheckFile( const wxString& filename )
{
if ( m_currentExtensions.GetCount() == 0 )
bool wxFileDialog::CheckFile( const wxString& filename )
{
if ( m_currentExtensions.GetCount() == 0 )
+ /*
+ Let the file dialog know what file type should be used initially.
+ If this is not done then when setting the filter index
+ programmatically to 1 the file will still have the extension
+ of the first file type instead of the second one. E.g. when file
+ types are foo and bar, a filename "myletter" with SetDialogIndex(1)
+ would result in saving as myletter.foo, while we want myletter.bar.
+ */
+ if(m_firstFileTypeFilter > 0)
+ {
+ DoOnFilterSelected(m_firstFileTypeFilter);
+ }
+
returnCode = [sPanel runModalForDirectory:dir.AsNSString() file:file.AsNSString() ];
ModalFinishedCallback(sPanel, returnCode);
}
returnCode = [sPanel runModalForDirectory:dir.AsNSString() file:file.AsNSString() ];
ModalFinishedCallback(sPanel, returnCode);
}