diff --git a/Package.resolved b/Package.resolved index 660e1488853..1e856366a7a 100644 --- a/Package.resolved +++ b/Package.resolved @@ -33,14 +33,14 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-docc-plugin", "state" : { - "revision" : "26ac5758409154cc448d7ab82389c520fa8a8247", - "version" : "1.3.0" + "revision" : "85e4bb4e1cd62cec64a4b8e769dcefdf0c5b9d64", + "version" : "1.4.3" } }, { "identity" : "swift-docc-symbolkit", "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-docc-symbolkit", + "location" : "https://github.com/swiftlang/swift-docc-symbolkit", "state" : { "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34", "version" : "1.0.0" diff --git a/Sources/AppKitBackend/AppKitBackend.swift b/Sources/AppKitBackend/AppKitBackend.swift index cec1301c9b9..7a9ec916e04 100644 --- a/Sources/AppKitBackend/AppKitBackend.swift +++ b/Sources/AppKitBackend/AppKitBackend.swift @@ -154,11 +154,10 @@ public final class AppKitBackend: AppBackend { ) -> (menuBar: NSMenu, helpMenu: NSMenu?) { let menuBar = NSMenu() - // The first menu item is special and always takes on the name of the - // app. For now just create a dummy item for it. - let dummy = NSMenuItem() - dummy.submenu = NSMenu() - menuBar.addItem(dummy) + // The first menu item is special and always takes on the name of the app. + let about = NSMenuItem() + about.submenu = createDefaultAboutMenu() + menuBar.addItem(about) var helpMenu: NSMenu? for submenu in submenus { @@ -173,6 +172,26 @@ public final class AppKitBackend: AppBackend { return (menuBar, helpMenu) } + public static func createDefaultAboutMenu() -> NSMenu { + let appName = ProcessInfo.processInfo.processName + let appMenu = NSMenu(title: appName) + appMenu.addItem(withTitle: "About \(appName)", action: #selector(NSApp.orderFrontStandardAboutPanel(_:)), keyEquivalent: "") + appMenu.addItem(NSMenuItem.separator()) + + let hideMenu = appMenu.addItem(withTitle: "Hide \(appName)", action: #selector(NSApp.hide(_:)), keyEquivalent: "h") + hideMenu.keyEquivalentModifierMask = .command + + let hideOthers = appMenu.addItem(withTitle: "Hide Others", action: #selector(NSApp.hideOtherApplications(_:)), keyEquivalent: "h") + hideOthers.keyEquivalentModifierMask = [.option, .command] + + appMenu.addItem(withTitle: "Show All", action: #selector(NSApp.unhideAllApplications(_:)), keyEquivalent: "") + + let quitMenu = appMenu.addItem(withTitle: "Quit \(appName)", action: #selector(NSApp.terminate(_:)), keyEquivalent: "q") + quitMenu.keyEquivalentModifierMask = .command + + return appMenu + } + public func setApplicationMenu(_ submenus: [ResolvedMenu.Submenu]) { let (menuBar, helpMenu) = Self.renderMenuBar(submenus) NSApplication.shared.mainMenu = menuBar