fixing multiple extensions in one filter, turning off temporarily sheets code
authorStefan Csomor <csomor@advancedconcepts.ch>
Sat, 21 Mar 2009 23:27:06 +0000 (23:27 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sat, 21 Mar 2009 23:27:06 +0000 (23:27 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/osx/cocoa/filedlg.mm

index 83f341d0053015c5b08884f0ea8a09ca7d62cf66..dfb81bc98dec7ce5c44a0f1f7744600479418030 100644 (file)
@@ -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 ( types == nil )
-                types = [[NSMutableArray alloc] init];
+                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()  ];
+                wxCFStringRef cfext(extension);
+                [types addObject: (NSString*)cfext.AsNSString()  ];
 #if 0
-            // add support for classic fileType / creator here
-            wxUint32 fileType, creator;
-            // extension -> mactypes
+                // 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];