fix Mac build with Xcode 8

Small issues in GHOST
- use NSApplicationDelegate protocol for our app delegate
- make sure NSApp is initialized before using
(cherry picked from commit df7be04ca6)
This commit is contained in:
Mike Erwin
2016-09-14 16:23:48 +02:00
parent 30a7e75089
commit 804f6bf31e

View File

@@ -285,7 +285,7 @@ extern "C" int GHOST_HACK_getFirstFile(char buf[FIRSTFILEBUFLG])
* CocoaAppDelegate * CocoaAppDelegate
* ObjC object to capture applicationShouldTerminate, and send quit event * ObjC object to capture applicationShouldTerminate, and send quit event
**/ **/
@interface CocoaAppDelegate : NSObject <NSFileManagerDelegate> { @interface CocoaAppDelegate : NSObject <NSApplicationDelegate> {
GHOST_SystemCocoa *systemCocoa; GHOST_SystemCocoa *systemCocoa;
} }
- (void)setSystemCocoa:(GHOST_SystemCocoa *)sysCocoa; - (void)setSystemCocoa:(GHOST_SystemCocoa *)sysCocoa;
@@ -412,65 +412,64 @@ GHOST_TSuccess GHOST_SystemCocoa::init()
}*/ }*/
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
if (NSApp == nil) { [NSApplication sharedApplication]; // initializes NSApp
[NSApplication sharedApplication];
if ([NSApp mainMenu] == nil) {
NSMenu *mainMenubar = [[NSMenu alloc] init];
NSMenuItem *menuItem;
NSMenu *windowMenu;
NSMenu *appMenu;
if ([NSApp mainMenu] == nil) { //Create the application menu
NSMenu *mainMenubar = [[NSMenu alloc] init]; appMenu = [[NSMenu alloc] initWithTitle:@"Blender"];
NSMenuItem *menuItem;
NSMenu *windowMenu; [appMenu addItemWithTitle:@"About Blender" action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];
NSMenu *appMenu; [appMenu addItem:[NSMenuItem separatorItem]];
//Create the application menu menuItem = [appMenu addItemWithTitle:@"Hide Blender" action:@selector(hide:) keyEquivalent:@"h"];
appMenu = [[NSMenu alloc] initWithTitle:@"Blender"]; [menuItem setKeyEquivalentModifierMask:NSCommandKeyMask];
[appMenu addItemWithTitle:@"About Blender" action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; menuItem = [appMenu addItemWithTitle:@"Hide others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"];
[appMenu addItem:[NSMenuItem separatorItem]]; [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask | NSCommandKeyMask)];
menuItem = [appMenu addItemWithTitle:@"Hide Blender" action:@selector(hide:) keyEquivalent:@"h"]; [appMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""];
[menuItem setKeyEquivalentModifierMask:NSCommandKeyMask];
menuItem = [appMenu addItemWithTitle:@"Quit Blender" action:@selector(terminate:) keyEquivalent:@"q"];
menuItem = [appMenu addItemWithTitle:@"Hide others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; [menuItem setKeyEquivalentModifierMask:NSCommandKeyMask];
[menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask | NSCommandKeyMask)];
menuItem = [[NSMenuItem alloc] init];
[appMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""]; [menuItem setSubmenu:appMenu];
menuItem = [appMenu addItemWithTitle:@"Quit Blender" action:@selector(terminate:) keyEquivalent:@"q"]; [mainMenubar addItem:menuItem];
[menuItem setKeyEquivalentModifierMask:NSCommandKeyMask]; [menuItem release];
[NSApp performSelector:@selector(setAppleMenu:) withObject:appMenu]; //Needed for 10.5
menuItem = [[NSMenuItem alloc] init]; [appMenu release];
[menuItem setSubmenu:appMenu];
//Create the window menu
[mainMenubar addItem:menuItem]; windowMenu = [[NSMenu alloc] initWithTitle:@"Window"];
[menuItem release];
[NSApp performSelector:@selector(setAppleMenu:) withObject:appMenu]; //Needed for 10.5 menuItem = [windowMenu addItemWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"];
[appMenu release]; [menuItem setKeyEquivalentModifierMask:NSCommandKeyMask];
//Create the window menu [windowMenu addItemWithTitle:@"Zoom" action:@selector(performZoom:) keyEquivalent:@""];
windowMenu = [[NSMenu alloc] initWithTitle:@"Window"];
menuItem = [windowMenu addItemWithTitle:@"Enter Full Screen" action:@selector(toggleFullScreen:) keyEquivalent:@"f" ];
menuItem = [windowMenu addItemWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; [menuItem setKeyEquivalentModifierMask:NSControlKeyMask | NSCommandKeyMask];
[menuItem setKeyEquivalentModifierMask:NSCommandKeyMask];
[windowMenu addItemWithTitle:@"Zoom" action:@selector(performZoom:) keyEquivalent:@""];
menuItem = [windowMenu addItemWithTitle:@"Enter Full Screen" action:@selector(toggleFullScreen:) keyEquivalent:@"f" ];
[menuItem setKeyEquivalentModifierMask:NSControlKeyMask | NSCommandKeyMask];
menuItem = [windowMenu addItemWithTitle:@"Close" action:@selector(performClose:) keyEquivalent:@"w"]; menuItem = [windowMenu addItemWithTitle:@"Close" action:@selector(performClose:) keyEquivalent:@"w"];
[menuItem setKeyEquivalentModifierMask:NSCommandKeyMask]; [menuItem setKeyEquivalentModifierMask:NSCommandKeyMask];
menuItem = [[NSMenuItem alloc] init]; menuItem = [[NSMenuItem alloc] init];
[menuItem setSubmenu:windowMenu]; [menuItem setSubmenu:windowMenu];
[mainMenubar addItem:menuItem]; [mainMenubar addItem:menuItem];
[menuItem release]; [menuItem release];
[NSApp setMainMenu:mainMenubar]; [NSApp setMainMenu:mainMenubar];
[NSApp setWindowsMenu:windowMenu]; [NSApp setWindowsMenu:windowMenu];
[windowMenu release]; [windowMenu release];
}
} }
if ([NSApp delegate] == nil) { if ([NSApp delegate] == nil) {
CocoaAppDelegate *appDelegate = [[CocoaAppDelegate alloc] init]; CocoaAppDelegate *appDelegate = [[CocoaAppDelegate alloc] init];
[appDelegate setSystemCocoa:this]; [appDelegate setSystemCocoa:this];