diff --git a/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp b/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp index 8ac190b535..d8f931facd 100644 --- a/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp +++ b/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp @@ -131,11 +131,11 @@ static void addZenityArgs (StringArray& args, String& separator, if (filters.isNotEmpty() && filters != "*" && filters != "*.*") { - args.add ("--file-filter"); - args.add (filters.replaceCharacter (';', ' ')); + StringArray tokens; + tokens.addTokens (filters, ";,|", "\""); - args.add ("--file-filter"); - args.add ("All files | *"); + for (int i = 0; i < tokens.size(); ++i) + args.add ("--file-filter='" + tokens[i] + "'"); } if (file.isDirectory()) diff --git a/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp b/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp index 2f7044ab50..2d3a2cee05 100644 --- a/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp +++ b/modules/juce_gui_basics/native/juce_win32_FileChooser.cpp @@ -218,6 +218,8 @@ void FileChooser::showPlatformDialog (Array& results, const String& title_ info.customComponent->enterModalState(); } + const StringRef separatorTokens (";,|"); + const size_t filterSpaceNumChars = 2048; HeapBlock filters; filters.calloc (filterSpaceNumChars); @@ -225,6 +227,10 @@ void FileChooser::showPlatformDialog (Array& results, const String& title_ filter.copyToUTF16 (filters + (bytesWritten / sizeof (WCHAR)), ((filterSpaceNumChars - 1) * sizeof (WCHAR) - bytesWritten)); + for (int i = 0; i < filterSpaceNumChars; ++i) + if (separatorTokens.text.indexOf ((juce_wchar) filters[i]) >= 0) + filters[i] = 0; + OPENFILENAMEW of = { 0 }; String localPath (info.initialPath); @@ -249,7 +255,7 @@ void FileChooser::showPlatformDialog (Array& results, const String& title_ if (isSaveDialogue) { StringArray tokens; - tokens.addTokens (filter, ";,", "\"'"); + tokens.addTokens (filter, separatorTokens, "\"'"); tokens.trim(); tokens.removeEmptyStrings();