diff --git a/src/osx/cocoa/filedlg.mm b/src/osx/cocoa/filedlg.mm index 05421b46b7..af98e93dab 100644 --- a/src/osx/cocoa/filedlg.mm +++ b/src/osx/cocoa/filedlg.mm @@ -260,7 +260,7 @@ void wxFileDialog::ShowWindowModal() wxCHECK_RET(parentWindow, "Window modal display requires parent."); - NSArray* types = GetTypesFromFilter( m_wildCard, m_filterNames, m_filterExtensions, m_currentExtensions ) ; + NSArray* allTypes = GetTypesFromFilter( m_wildCard, m_filterNames, m_filterExtensions, m_currentExtensions ) ; m_useFileTypeFilter = m_filterExtensions.GetCount() > 1; @@ -286,7 +286,6 @@ void wxFileDialog::ShowWindowModal() else if ( m_useFileTypeFilter ) { m_firstFileTypeFilter = GetMatchingFilterExtension(m_fileName); - types = GetTypesFromExtension(m_filterExtensions[m_firstFileTypeFilter], m_currentExtensions); } if ( HasFlag(wxFD_SAVE) ) @@ -302,7 +301,7 @@ void wxFileDialog::ShowWindowModal() // be able to pass this in [sPanel setTreatsFilePackagesAsDirectories:NO]; [sPanel setCanSelectHiddenExtension:YES]; - [sPanel setAllowedFileTypes:types]; + [sPanel setAllowedFileTypes:allTypes]; [sPanel setAllowsOtherFileTypes:NO]; [sPanel setShowsHiddenFiles: HasFlag(wxFD_SHOW_HIDDEN) ? YES : NO]; @@ -316,14 +315,17 @@ void wxFileDialog::ShowWindowModal() */ if(m_firstFileTypeFilter > 0) { - DoOnFilterSelected(m_firstFileTypeFilter); + DoOnFilterSelected(m_firstFileTypeFilter); } else { - if ( m_delegate ) - [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; - else - [sPanel setAllowedFileTypes: types]; + NSArray* types = GetTypesFromExtension(m_filterExtensions[m_firstFileTypeFilter], m_currentExtensions); + if ( m_delegate ) + [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; + else + { + [sPanel setAllowedFileTypes: types]; + } } NSWindow* nativeParent = parentWindow->GetWXWindow(); @@ -351,7 +353,7 @@ void wxFileDialog::ShowWindowModal() [oPanel setCanChooseFiles:YES]; [oPanel setMessage:cf.AsNSString()]; [oPanel setAllowsMultipleSelection: (HasFlag(wxFD_MULTIPLE) ? YES : NO )]; - [oPanel setAllowedFileTypes:types]; + [oPanel setAllowedFileTypes:allTypes]; [oPanel setAllowsOtherFileTypes:NO]; [oPanel setShowsHiddenFiles: HasFlag(wxFD_SHOW_HIDDEN) ? YES : NO]; @@ -367,8 +369,6 @@ void wxFileDialog::ShowWindowModal() { if ( m_delegate ) [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; - else - [oPanel setAllowedFileTypes: types]; } NSWindow* nativeParent = parentWindow->GetWXWindow(); @@ -463,7 +463,9 @@ void wxFileDialog::DoOnFilterSelected(int index) [panel validateVisibleColumns]; } else + { [panel setAllowedFileTypes:types]; + } m_currentlySelectedFilterIndex = index; @@ -578,7 +580,7 @@ int wxFileDialog::ShowModal() int returnCode = -1; - NSArray* types = GetTypesFromFilter( m_wildCard, m_filterNames, m_filterExtensions, m_currentExtensions ) ; + NSArray* allTypes = GetTypesFromFilter( m_wildCard, m_filterNames, m_filterExtensions, m_currentExtensions ) ; m_useFileTypeFilter = m_filterExtensions.GetCount() > 1; @@ -604,7 +606,6 @@ int wxFileDialog::ShowModal() else if ( m_useFileTypeFilter ) { m_firstFileTypeFilter = GetMatchingFilterExtension(m_fileName); - types = GetTypesFromExtension(m_filterExtensions[m_firstFileTypeFilter], m_currentExtensions); } OSXBeginModalDialog(); @@ -622,7 +623,7 @@ int wxFileDialog::ShowModal() // be able to pass this in [sPanel setTreatsFilePackagesAsDirectories:NO]; [sPanel setCanSelectHiddenExtension:YES]; - [sPanel setAllowedFileTypes:types]; + [sPanel setAllowedFileTypes:allTypes]; [sPanel setAllowsOtherFileTypes:NO]; [sPanel setShowsHiddenFiles: HasFlag(wxFD_SHOW_HIDDEN) ? YES : NO]; @@ -644,10 +645,11 @@ int wxFileDialog::ShowModal() } else { - if ( m_delegate ) - [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; - else - [sPanel setAllowedFileTypes: types]; + NSArray* types = GetTypesFromExtension(m_filterExtensions[m_firstFileTypeFilter], m_currentExtensions); + if ( m_delegate ) + [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; + else + [sPanel setAllowedFileTypes: types]; } if ( !m_dir.IsEmpty() ) @@ -676,7 +678,7 @@ int wxFileDialog::ShowModal() [oPanel setCanChooseFiles:YES]; [oPanel setMessage:cf.AsNSString()]; [oPanel setAllowsMultipleSelection: (HasFlag(wxFD_MULTIPLE) ? YES : NO )]; - [oPanel setAllowedFileTypes:types]; + [oPanel setAllowedFileTypes:allTypes]; [oPanel setAllowsOtherFileTypes:NO]; [oPanel setShowsHiddenFiles: HasFlag(wxFD_SHOW_HIDDEN) ? YES : NO]; @@ -692,9 +694,9 @@ int wxFileDialog::ShowModal() { if ( m_delegate ) [(wxOpenSavePanelDelegate*) m_delegate setAllowedExtensions: m_currentExtensions]; - else - [oPanel setAllowedFileTypes: types]; } + + if ( !m_dir.IsEmpty() ) [oPanel setDirectoryURL:[NSURL fileURLWithPath:dir.AsNSString() isDirectory:YES]];