|
1 | 1 | /*
|
2 |
| - * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. |
| 2 | + * Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved. |
3 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
4 | 4 | *
|
5 | 5 | * This code is free software; you can redistribute it and/or modify it
|
@@ -69,6 +69,24 @@ static BOOL doPerformKeyEquivalent(NSEvent* theEvent, NSWindow* panel)
|
69 | 69 | return false;
|
70 | 70 | }
|
71 | 71 |
|
| 72 | +/* |
| 73 | + * Function to determine whether or not to use raw NSPanel classes |
| 74 | + * (either NSSavePanel or NSOpenPanel). |
| 75 | + * |
| 76 | + * Return: YES if we need to use the raw NSPanel classes; NO if we |
| 77 | + * can use the Glass subclasses |
| 78 | + */ |
| 79 | +static BOOL useNSPanel() |
| 80 | +{ |
| 81 | + // As of macOS 10.15 all file dialogs are out of process, so we |
| 82 | + // effectively can't subclass them. |
| 83 | + if (@available(macOS 10.15, *)) { |
| 84 | + return YES; |
| 85 | + } else { |
| 86 | + return [GlassApplication isSandboxed]; |
| 87 | + } |
| 88 | +} |
| 89 | + |
72 | 90 | @interface GlassSavePanel : NSSavePanel
|
73 | 91 | @end
|
74 | 92 |
|
@@ -485,7 +503,7 @@ static jobject convertNSURLtoFile(JNIEnv *env, NSURL *url)
|
485 | 503 | GLASS_ASSERT_MAIN_JAVA_THREAD(env);
|
486 | 504 | GLASS_POOL_ENTER;
|
487 | 505 | {
|
488 |
| - NSOpenPanel *panel = [GlassApplication isSandboxed] ? [NSOpenPanel openPanel] : [GlassOpenPanel openPanel]; |
| 506 | + NSOpenPanel *panel = useNSPanel() ? [NSOpenPanel openPanel] : [GlassOpenPanel openPanel]; |
489 | 507 | [panel setAllowsMultipleSelection:(jMultipleMode==JNI_TRUE)];
|
490 | 508 | [panel setTitle:[GlassHelper nsStringWithJavaString:jTitle withEnv:env]];
|
491 | 509 | NSString *folder = [GlassHelper nsStringWithJavaString:jFolder withEnv:env];
|
@@ -561,7 +579,7 @@ static jobject convertNSURLtoFile(JNIEnv *env, NSURL *url)
|
561 | 579 | GLASS_ASSERT_MAIN_JAVA_THREAD(env);
|
562 | 580 | GLASS_POOL_ENTER;
|
563 | 581 | {
|
564 |
| - NSSavePanel *panel = [GlassApplication isSandboxed] ? [NSSavePanel savePanel] : [GlassSavePanel savePanel]; |
| 582 | + NSSavePanel *panel = useNSPanel() ? [NSSavePanel savePanel] : [GlassSavePanel savePanel]; |
565 | 583 | [panel setTitle:[GlassHelper nsStringWithJavaString:jTitle withEnv:env]];
|
566 | 584 | NSString *folder = [GlassHelper nsStringWithJavaString:jFolder withEnv:env];
|
567 | 585 | if ([folder length] > 0)
|
@@ -633,7 +651,7 @@ static jobject convertNSURLtoFile(JNIEnv *env, NSURL *url)
|
633 | 651 | GLASS_ASSERT_MAIN_JAVA_THREAD(env);
|
634 | 652 | GLASS_POOL_ENTER;
|
635 | 653 | {
|
636 |
| - NSOpenPanel *panel = [GlassApplication isSandboxed] ? [NSOpenPanel openPanel] : [GlassOpenPanel openPanel]; |
| 654 | + NSOpenPanel *panel = useNSPanel() ? [NSOpenPanel openPanel] : [GlassOpenPanel openPanel]; |
637 | 655 | [panel setTitle:[GlassHelper nsStringWithJavaString:jTitle withEnv:env]];
|
638 | 656 | NSString *folder = [GlassHelper nsStringWithJavaString:jFolder withEnv:env];
|
639 | 657 | if ([folder length] > 0)
|
|
0 commit comments