[Scummvm-git-logs] scummvm master -> 8eac9606bc899976a1042baa0641c9db8c89e5a0
criezy
criezy at scummvm.org
Sun Mar 22 20:39:15 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8eac9606bc MACOSX: Check selector exists when trying to replace application menus
Commit: 8eac9606bc899976a1042baa0641c9db8c89e5a0
https://github.com/scummvm/scummvm/commit/8eac9606bc899976a1042baa0641c9db8c89e5a0
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2020-03-22T20:36:35Z
Commit Message:
MACOSX: Check selector exists when trying to replace application menus
In particular it has been reported that setHelpMenu was introduced in
MacOS X 10.6. So hopefully this change will fix running ScummVM on
MacOS X 10.5 or older.
This might fix bug #11260: MAC OS X: App incomplete when launched on
OS X 10.5.8.
Changed paths:
backends/platform/sdl/macosx/appmenu_osx.mm
diff --git a/backends/platform/sdl/macosx/appmenu_osx.mm b/backends/platform/sdl/macosx/appmenu_osx.mm
index 38ce8c49a2..0263b95fe2 100644
--- a/backends/platform/sdl/macosx/appmenu_osx.mm
+++ b/backends/platform/sdl/macosx/appmenu_osx.mm
@@ -137,6 +137,10 @@ NSString *constructNSStringFromCString(const char *rawCString, CFStringEncoding
}
static NSMenu *addMenu(const char *title, CFStringEncoding encoding, NSString *key, SEL setAs) {
+ if (setAs && ![NSApp respondsToSelector:setAs]) {
+ return nil;
+ }
+
NSString *str = constructNSStringFromCString(title, encoding);
NSMenu *menu = [[NSMenu alloc] initWithTitle:str];
@@ -178,10 +182,6 @@ void releaseMenu() {
}
void replaceApplicationMenuItems() {
- if (!delegate) {
- delegate = [[ScummVMMenuHandler alloc] init];
- }
-
// We cannot use [[NSApp mainMenu] removeAllItems] as removeAllItems was added in OS X 10.6
// So remove the SDL generated menus one by one instead.
while ([[NSApp mainMenu] numberOfItems] > 0) {
@@ -200,30 +200,38 @@ void replaceApplicationMenuItems() {
#endif
NSMenu *appleMenu = addMenu("ScummVM", kCFStringEncodingASCII, @"", @selector(setAppleMenu:));
- addMenuItem(_("About ScummVM"), stringEncoding, nil, @selector(orderFrontStandardAboutPanel:), @"", appleMenu);
- [appleMenu addItem:[NSMenuItem separatorItem]];
- addMenuItem(_("Hide ScummVM"), stringEncoding, nil, @selector(hide:), @"h", appleMenu);
- addMenuItem(_("Hide Others"), stringEncoding, nil, @selector(hideOtherApplications:), @"h", appleMenu, (NSEventModifierFlagOption|NSEventModifierFlagCommand));
- addMenuItem(_("Show All"), stringEncoding, nil, @selector(unhideAllApplications:), @"", appleMenu);
- [appleMenu addItem:[NSMenuItem separatorItem]];
- addMenuItem(_("Quit ScummVM"), stringEncoding, nil, @selector(terminate:), @"q", appleMenu);
+ if (appleMenu) {
+ addMenuItem(_("About ScummVM"), stringEncoding, nil, @selector(orderFrontStandardAboutPanel:), @"", appleMenu);
+ [appleMenu addItem:[NSMenuItem separatorItem]];
+ addMenuItem(_("Hide ScummVM"), stringEncoding, nil, @selector(hide:), @"h", appleMenu);
+ addMenuItem(_("Hide Others"), stringEncoding, nil, @selector(hideOtherApplications:), @"h", appleMenu, (NSEventModifierFlagOption|NSEventModifierFlagCommand));
+ addMenuItem(_("Show All"), stringEncoding, nil, @selector(unhideAllApplications:), @"", appleMenu);
+ [appleMenu addItem:[NSMenuItem separatorItem]];
+ addMenuItem(_("Quit ScummVM"), stringEncoding, nil, @selector(terminate:), @"q", appleMenu);
+ }
NSMenu *windowMenu = addMenu(_("Window"), stringEncoding, @"", @selector(setWindowsMenu:));
- addMenuItem(_("Minimize"), stringEncoding, nil, @selector(performMiniaturize:), @"m", windowMenu);
+ if (windowMenu) {
+ addMenuItem(_("Minimize"), stringEncoding, nil, @selector(performMiniaturize:), @"m", windowMenu);
+ }
NSMenu *helpMenu = addMenu(_("Help"), stringEncoding, @"", @selector(setHelpMenu:));
- addMenuItem(_("User Manual"), stringEncoding, delegate, @selector(openUserManual), @"", helpMenu);
- [helpMenu addItem:[NSMenuItem separatorItem]];
- addMenuItem(_("General Information"), stringEncoding, delegate, @selector(openReadme), @"", helpMenu);
- addMenuItem(_("What's New in ScummVM"), stringEncoding, delegate, @selector(openNews), @"", helpMenu);
- [helpMenu addItem:[NSMenuItem separatorItem]];
- addMenuItem(_("Credits"), stringEncoding, delegate, @selector(openCredits), @"", helpMenu);
- addMenuItem(_("GPL License"), stringEncoding, delegate, @selector(openLicenseGPL), @"", helpMenu);
- addMenuItem(_("LGPL License"), stringEncoding, delegate, @selector(openLicenseLGPL), @"", helpMenu);
- addMenuItem(_("Freefont License"), stringEncoding, delegate, @selector(openLicenseFreefont), @"", helpMenu);
- addMenuItem(_("OFL License"), stringEncoding, delegate, @selector(openLicenseOFL), @"", helpMenu);
- addMenuItem(_("BSD License"), stringEncoding, delegate, @selector(openLicenseBSD), @"", helpMenu);
-
+ if (helpMenu) {
+ if (!delegate) {
+ delegate = [[ScummVMMenuHandler alloc] init];
+ }
+ addMenuItem(_("User Manual"), stringEncoding, delegate, @selector(openUserManual), @"", helpMenu);
+ [helpMenu addItem:[NSMenuItem separatorItem]];
+ addMenuItem(_("General Information"), stringEncoding, delegate, @selector(openReadme), @"", helpMenu);
+ addMenuItem(_("What's New in ScummVM"), stringEncoding, delegate, @selector(openNews), @"", helpMenu);
+ [helpMenu addItem:[NSMenuItem separatorItem]];
+ addMenuItem(_("Credits"), stringEncoding, delegate, @selector(openCredits), @"", helpMenu);
+ addMenuItem(_("GPL License"), stringEncoding, delegate, @selector(openLicenseGPL), @"", helpMenu);
+ addMenuItem(_("LGPL License"), stringEncoding, delegate, @selector(openLicenseLGPL), @"", helpMenu);
+ addMenuItem(_("Freefont License"), stringEncoding, delegate, @selector(openLicenseFreefont), @"", helpMenu);
+ addMenuItem(_("OFL License"), stringEncoding, delegate, @selector(openLicenseOFL), @"", helpMenu);
+ addMenuItem(_("BSD License"), stringEncoding, delegate, @selector(openLicenseBSD), @"", helpMenu);
+ }
[appleMenu release];
[windowMenu release];
More information about the Scummvm-git-logs
mailing list