|
38 | 38 | #define LOG(MSG, ...) GLASS_LOG(MSG, ## __VA_ARGS__);
|
39 | 39 | #endif
|
40 | 40 |
|
41 |
| -static BOOL doPerformKeyEquivalent(NSEvent* theEvent, NSWindow* panel) |
42 |
| -{ |
43 |
| - NSResponder* responder = [panel firstResponder]; |
44 |
| - if ([responder isKindOfClass:[NSText class]]) |
45 |
| - { |
46 |
| - NSText* text = (NSText*)responder; |
47 |
| - if ([theEvent type] == NSKeyDown |
48 |
| - && ([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) == NSCommandKeyMask) |
49 |
| - { |
50 |
| - NSRange range = [text selectedRange]; |
51 |
| - BOOL hasSelectedText = range.length > 0; |
52 |
| - if ([theEvent keyCode] == 7 && hasSelectedText) // Cmd + X - Cut |
53 |
| - { |
54 |
| - [text cut:panel]; |
55 |
| - return true; |
56 |
| - } |
57 |
| - if ([theEvent keyCode] == 8 && hasSelectedText) // Cmd + C - Copy |
58 |
| - { |
59 |
| - [text copy:panel]; |
60 |
| - return true; |
61 |
| - } |
62 |
| - if ([theEvent keyCode] == 9) // Cmd + V - Paste |
63 |
| - { |
64 |
| - [text paste:panel]; |
65 |
| - return true; |
66 |
| - } |
67 |
| - } |
68 |
| - } |
69 |
| - return false; |
70 |
| -} |
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 |
| - |
90 |
| -@interface GlassSavePanel : NSSavePanel |
91 |
| -@end |
92 |
| - |
93 |
| -@implementation GlassSavePanel |
94 |
| - |
95 |
| -- (BOOL)performKeyEquivalent:(NSEvent *)theEvent |
96 |
| -{ |
97 |
| - if (doPerformKeyEquivalent(theEvent, self)) { |
98 |
| - return true; |
99 |
| - } |
100 |
| - return [super performKeyEquivalent:theEvent]; |
101 |
| -} |
102 |
| -@end |
103 |
| - |
104 |
| -@interface GlassOpenPanel : NSOpenPanel |
105 |
| -@end |
106 |
| - |
107 |
| -@implementation GlassOpenPanel |
108 |
| - |
109 |
| -- (BOOL)performKeyEquivalent:(NSEvent *)theEvent |
110 |
| -{ |
111 |
| - if (doPerformKeyEquivalent(theEvent, self)) { |
112 |
| - return true; |
113 |
| - } |
114 |
| - return [super performKeyEquivalent:theEvent]; |
115 |
| -} |
116 |
| -@end |
117 |
| - |
118 |
| - |
119 | 41 | #pragma mark --- Dispatcher
|
120 | 42 |
|
121 | 43 | @interface DialogDispatcher : NSObject
|
@@ -503,7 +425,7 @@ static jobject convertNSURLtoFile(JNIEnv *env, NSURL *url)
|
503 | 425 | GLASS_ASSERT_MAIN_JAVA_THREAD(env);
|
504 | 426 | GLASS_POOL_ENTER;
|
505 | 427 | {
|
506 |
| - NSOpenPanel *panel = useNSPanel() ? [NSOpenPanel openPanel] : [GlassOpenPanel openPanel]; |
| 428 | + NSOpenPanel *panel = [NSOpenPanel openPanel]; |
507 | 429 | [panel setAllowsMultipleSelection:(jMultipleMode==JNI_TRUE)];
|
508 | 430 | [panel setTitle:[GlassHelper nsStringWithJavaString:jTitle withEnv:env]];
|
509 | 431 | NSString *folder = [GlassHelper nsStringWithJavaString:jFolder withEnv:env];
|
@@ -579,7 +501,7 @@ static jobject convertNSURLtoFile(JNIEnv *env, NSURL *url)
|
579 | 501 | GLASS_ASSERT_MAIN_JAVA_THREAD(env);
|
580 | 502 | GLASS_POOL_ENTER;
|
581 | 503 | {
|
582 |
| - NSSavePanel *panel = useNSPanel() ? [NSSavePanel savePanel] : [GlassSavePanel savePanel]; |
| 504 | + NSSavePanel *panel = [NSSavePanel savePanel]; |
583 | 505 | [panel setTitle:[GlassHelper nsStringWithJavaString:jTitle withEnv:env]];
|
584 | 506 | NSString *folder = [GlassHelper nsStringWithJavaString:jFolder withEnv:env];
|
585 | 507 | if ([folder length] > 0)
|
@@ -651,7 +573,7 @@ static jobject convertNSURLtoFile(JNIEnv *env, NSURL *url)
|
651 | 573 | GLASS_ASSERT_MAIN_JAVA_THREAD(env);
|
652 | 574 | GLASS_POOL_ENTER;
|
653 | 575 | {
|
654 |
| - NSOpenPanel *panel = useNSPanel() ? [NSOpenPanel openPanel] : [GlassOpenPanel openPanel]; |
| 576 | + NSOpenPanel *panel = [NSOpenPanel openPanel]; |
655 | 577 | [panel setTitle:[GlassHelper nsStringWithJavaString:jTitle withEnv:env]];
|
656 | 578 | NSString *folder = [GlassHelper nsStringWithJavaString:jFolder withEnv:env];
|
657 | 579 | if ([folder length] > 0)
|
|
0 commit comments