diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index 5dd4cb5ab..cb416f9b0 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -293,6 +293,11 @@ CPRunContinuesResponse = -1002; _finishedLaunching = YES; } +- (void)terminate:(id)aSender +{ + [CPPlatform terminateApplication]; +} + /*! Calls \c -finishLaunching method which results in starting the main event loop. @@ -407,7 +412,7 @@ CPRunContinuesResponse = -1002; { if ([_mainMenu performKeyEquivalent:anEvent]) return YES; - + return NO; } @@ -492,7 +497,13 @@ CPRunContinuesResponse = -1002; */ - (void)setMainMenu:(CPMenu)aMenu { + if (_mainMenu === aMenu) + return; + _mainMenu = aMenu; + + if ([CPPlatform supportsNativeMainMenu]) + window.cpSetMainMenu(_mainMenu); } - (void)orderFrontColorPanel:(id)aSender diff --git a/AppKit/CPMenu.j b/AppKit/CPMenu.j index 257197e1f..7a87468fa 100644 --- a/AppKit/CPMenu.j +++ b/AppKit/CPMenu.j @@ -91,7 +91,10 @@ var _CPMenuBarVisible = NO, return; _CPMenuBarVisible = menuBarShouldBeVisible; - + + if ([CPPlatform supportsNativeMainMenu]) + return; + if (menuBarShouldBeVisible) { if (!_CPMenuBarSharedWindow) diff --git a/AppKit/Platform/CPPlatform.j b/AppKit/Platform/CPPlatform.j index 0e92269e9..851e538bc 100644 --- a/AppKit/Platform/CPPlatform.j +++ b/AppKit/Platform/CPPlatform.j @@ -34,4 +34,15 @@ return CPFeatureIsCompatible(CPHTMLDragAndDropFeature); } ++ (BOOL)supportsNativeMainMenu +{ + return (typeof window["cpSetMainMenu"] === "function"); +} + ++ (void)terminateApplication +{ + if (typeof window["cpTerminate"] === "function") + window.cpTerminate(); +} + @end