From b822bdc032e508858596a36cf5f344d60bf26f34 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sat, 21 Mar 2009 23:27:06 +0000 Subject: [PATCH] fixing multiple extensions in one filter, turning off temporarily sheets code git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/osx/cocoa/filedlg.mm | 61 ++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/src/osx/cocoa/filedlg.mm b/src/osx/cocoa/filedlg.mm index 83f341d005..dfb81bc98d 100644 --- a/src/osx/cocoa/filedlg.mm +++ b/src/osx/cocoa/filedlg.mm @@ -30,6 +30,7 @@ #endif #include "wx/filename.h" +#include "wx/tokenzr.h" #include "wx/osx/private.h" @@ -102,34 +103,38 @@ NSArray* GetTypesFromFilter( const wxString filter ) const size_t extCount = extensions.GetCount(); for ( size_t i = 0 ; i < extCount; i++ ) { - wxString extension = extensions[i]; - - // Remove leading '*' - if (extension.length() && (extension.GetChar(0) == '*')) - extension = extension.Mid( 1 ); - - // Remove leading '.' - if (extension.length() && (extension.GetChar(0) == '.')) - extension = extension.Mid( 1 ); - - if ( extension.IsEmpty() ) + wxString extensiongroup = extensions[i]; + wxStringTokenizer tokenizer( extensiongroup , wxT(";") ) ; + while ( tokenizer.HasMoreTokens() ) { - if ( types != nil ) - [types release]; - return nil; + wxString extension = tokenizer.GetNextToken() ; + // Remove leading '*' + if (extension.length() && (extension.GetChar(0) == '*')) + extension = extension.Mid( 1 ); + + // Remove leading '.' + if (extension.length() && (extension.GetChar(0) == '.')) + extension = extension.Mid( 1 ); + + if ( extension.IsEmpty() ) + { + if ( types != nil ) + [types release]; + return nil; + } + + if ( types == nil ) + types = [[NSMutableArray alloc] init]; + + wxCFStringRef cfext(extension); + [types addObject: (NSString*)cfext.AsNSString() ]; +#if 0 + // add support for classic fileType / creator here + wxUint32 fileType, creator; + // extension -> mactypes +#endif } - - if ( types == nil ) - types = [[NSMutableArray alloc] init]; - - wxCFStringRef cfext(extension); - [types addObject: (NSString*)cfext.AsNSString() ]; -#if 0 - // add support for classic fileType / creator here - wxUint32 fileType, creator; - // extension -> mactypes -#endif } } return types; @@ -172,7 +177,8 @@ int wxFileDialog::ShowModal() { } - if (parentWindow) + // avoid multiple event handlers on stack + if ( 0 /*parentWindow*/) { NSWindow* nativeParent = parentWindow->GetWXWindow(); ModalDialogDelegate* sheetDelegate = [[ModalDialogDelegate alloc] init]; @@ -211,7 +217,8 @@ int wxFileDialog::ShowModal() [oPanel setCanChooseFiles:YES]; [oPanel setMessage:cf.AsNSString()]; - if (parentWindow) + // avoid multiple event handlers on stack + if ( 0 /*parentWindow*/) { NSWindow* nativeParent = parentWindow->GetWXWindow(); ModalDialogDelegate* sheetDelegate = [[ModalDialogDelegate alloc] init];