fix: multiple extension filters on macOS (#23449)

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
trop[bot]
2020-05-07 11:57:40 -07:00
committed by GitHub
parent 60bcf42edf
commit c63430c5d0

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]];