fix: multiple extension filters on macOS (#23409)
This commit is contained in:
parent
a4f701f9a5
commit
fc434f136b
1 changed files with 10 additions and 1 deletions
|
@ -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]];
|
||||
|
|
Loading…
Reference in a new issue