fix: dialog file filters and macOS app bundles (#47840)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
parent
4a81ae7954
commit
b180cfee6c
1 changed files with 12 additions and 0 deletions
|
@ -122,6 +122,18 @@ void SetAllowedFileTypes(NSSavePanel* dialog, const Filters& filters) {
|
||||||
if (ext == "*") {
|
if (ext == "*") {
|
||||||
[content_types_set addObject:[UTType typeWithFilenameExtension:@"*"]];
|
[content_types_set addObject:[UTType typeWithFilenameExtension:@"*"]];
|
||||||
break;
|
break;
|
||||||
|
} else if (ext == "app") {
|
||||||
|
// This handles a bug on macOS where the "app" extension by default
|
||||||
|
// maps to "com.apple.application-file", which is for an Application
|
||||||
|
// file (older single-file carbon based apps), and not modern
|
||||||
|
// Application Bundles (multi file packages as you'd see for all modern
|
||||||
|
// applications).
|
||||||
|
UTType* superType =
|
||||||
|
[UTType typeWithIdentifier:@"com.apple.application-bundle"];
|
||||||
|
if (UTType* utt = [UTType typeWithFilenameExtension:@"app"
|
||||||
|
conformingToType:superType]) {
|
||||||
|
[content_types_set addObject:utt];
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (UTType* utt = [UTType typeWithFilenameExtension:@(ext.c_str())])
|
if (UTType* utt = [UTType typeWithFilenameExtension:@(ext.c_str())])
|
||||||
[content_types_set addObject:utt];
|
[content_types_set addObject:utt];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue