|
|
|
@ -826,48 +826,45 @@ static const NSRange kEmptyRange = { NSNotFound, 0 }; |
|
|
|
|
} |
|
|
|
|
@end |
|
|
|
|
|
|
|
|
|
// Try to figure out what the calling application is called |
|
|
|
|
// Set up the menu bar (manually) |
|
|
|
|
// This is nasty, nasty stuff -- calls to undocumented semi-private APIs that |
|
|
|
|
// could go away at any moment, lots of stuff that really should be |
|
|
|
|
// localize(d|able), etc. Add a nib to save us this horror. |
|
|
|
|
// |
|
|
|
|
static NSString* findAppName(void) |
|
|
|
|
static void createMenuBar(void) |
|
|
|
|
{ |
|
|
|
|
size_t i; |
|
|
|
|
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary]; |
|
|
|
|
|
|
|
|
|
// Keys to search for as potential application names |
|
|
|
|
NSString* GLFWNameKeys[] = |
|
|
|
|
NSString* appName = nil; |
|
|
|
|
NSDictionary* bundleInfo = [[NSBundle mainBundle] infoDictionary]; |
|
|
|
|
NSString* nameKeys[] = |
|
|
|
|
{ |
|
|
|
|
@"CFBundleDisplayName", |
|
|
|
|
@"CFBundleName", |
|
|
|
|
@"CFBundleExecutable", |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
for (i = 0; i < sizeof(GLFWNameKeys) / sizeof(GLFWNameKeys[0]); i++) |
|
|
|
|
// Try to figure out what the calling application is called |
|
|
|
|
|
|
|
|
|
for (i = 0; i < sizeof(nameKeys) / sizeof(nameKeys[0]); i++) |
|
|
|
|
{ |
|
|
|
|
id name = [infoDictionary objectForKey:GLFWNameKeys[i]]; |
|
|
|
|
id name = [bundleInfo objectForKey:nameKeys[i]]; |
|
|
|
|
if (name && |
|
|
|
|
[name isKindOfClass:[NSString class]] && |
|
|
|
|
![name isEqualToString:@""]) |
|
|
|
|
{ |
|
|
|
|
return name; |
|
|
|
|
appName = name; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
char** progname = _NSGetProgname(); |
|
|
|
|
if (progname && *progname) |
|
|
|
|
return [NSString stringWithUTF8String:*progname]; |
|
|
|
|
|
|
|
|
|
// Really shouldn't get here |
|
|
|
|
return @"GLFW Application"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Set up the menu bar (manually) |
|
|
|
|
// This is nasty, nasty stuff -- calls to undocumented semi-private APIs that |
|
|
|
|
// could go away at any moment, lots of stuff that really should be |
|
|
|
|
// localize(d|able), etc. Add a nib to save us this horror. |
|
|
|
|
// |
|
|
|
|
static void createMenuBar(void) |
|
|
|
|
{ |
|
|
|
|
NSString* appName = findAppName(); |
|
|
|
|
if (!appName) |
|
|
|
|
{ |
|
|
|
|
char** progname = _NSGetProgname(); |
|
|
|
|
if (progname && *progname) |
|
|
|
|
appName = [NSString stringWithUTF8String:*progname]; |
|
|
|
|
else |
|
|
|
|
appName = @"GLFW Application"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
NSMenu* bar = [[NSMenu alloc] init]; |
|
|
|
|
[NSApp setMainMenu:bar]; |
|
|
|
|