|
@@ -82,9 +82,9 @@
|
|
@implementation GodotApplicationDelegate
|
|
@implementation GodotApplicationDelegate
|
|
|
|
|
|
- (void)forceUnbundledWindowActivationHackStep1 {
|
|
- (void)forceUnbundledWindowActivationHackStep1 {
|
|
- // Step1: Switch focus to macOS Dock.
|
|
|
|
|
|
+ // Step 1: Switch focus to macOS SystemUIServer process.
|
|
// Required to perform step 2, TransformProcessType will fail if app is already the in focus.
|
|
// Required to perform step 2, TransformProcessType will fail if app is already the in focus.
|
|
- for (NSRunningApplication *app in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.dock"]) {
|
|
|
|
|
|
+ for (NSRunningApplication *app in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.systemuiserver"]) {
|
|
[app activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|
|
[app activateWithOptions:NSApplicationActivateIgnoringOtherApps];
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -107,8 +107,8 @@
|
|
|
|
|
|
- (void)applicationDidFinishLaunching:(NSNotification *)notice {
|
|
- (void)applicationDidFinishLaunching:(NSNotification *)notice {
|
|
NSString *nsappname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
|
|
NSString *nsappname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
|
|
- if (nsappname == nil) {
|
|
|
|
- // If executable is not a bundled, macOS WindowServer won't register and activate app window correctly (menu and title bar are grayed out and input ignored).
|
|
|
|
|
|
+ if (nsappname == nil || isatty(STDOUT_FILENO) || isatty(STDIN_FILENO) || isatty(STDERR_FILENO)) {
|
|
|
|
+ // If the executable is started from terminal or is not bundled, macOS WindowServer won't register and activate app window correctly (menu and title bar are grayed out and input ignored).
|
|
[self performSelector:@selector(forceUnbundledWindowActivationHackStep1) withObject:nil afterDelay:0.02];
|
|
[self performSelector:@selector(forceUnbundledWindowActivationHackStep1) withObject:nil afterDelay:0.02];
|
|
}
|
|
}
|
|
}
|
|
}
|