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:
@@ -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];
|
||||||
|
Reference in New Issue
Block a user