fix: multiple extension filters on macOS (#23409)

This commit is contained in:
Shelley Vohr 2020-05-07 08:52:56 -07:00 committed by GitHub
parent a4f701f9a5
commit fc434f136b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -92,7 +92,16 @@ void SetAllowedFileTypes(NSSavePanel* dialog, const Filters& filters) {
for (const Filter& filter : filters) {
NSMutableSet* file_type_set = [NSMutableSet set];
[filter_names addObject:@(filter.first.c_str())];
for (const std::string& ext : filter.second) {
for (std::string ext : filter.second) {
// macOS is incapable of understanding multiple file extensions,
// so we need to tokenize the extension that's been passed in.
// We want to err on the side of allowing files, so we pass
// along only the final extension ('tar.gz' => 'gz').
auto pos = ext.rfind('.');
if (pos != std::string::npos) {
ext.erase(0, pos + 1);
}
[file_type_set addObject:@(ext.c_str())];
}
[file_types_list addObject:[file_type_set allObjects]];