Skip to content

Commit d2dd03a

Browse files
furby-tmstackotter
andauthored
AppKitBackend: Add default main menu items (#97)
* Add first menu item for appkit backend. Signed-off-by: furby™ <devs@wabi.foundation> * fix package dependencies. Signed-off-by: furby™ <devs@wabi.foundation> --------- Signed-off-by: furby™ <devs@wabi.foundation> Co-authored-by: stackotter <stackotter@stackotter.dev>
1 parent 1f0092a commit d2dd03a

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

Package.resolved

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,14 @@
3333
"kind" : "remoteSourceControl",
3434
"location" : "https://github.com/apple/swift-docc-plugin",
3535
"state" : {
36-
"revision" : "26ac5758409154cc448d7ab82389c520fa8a8247",
37-
"version" : "1.3.0"
36+
"revision" : "85e4bb4e1cd62cec64a4b8e769dcefdf0c5b9d64",
37+
"version" : "1.4.3"
3838
}
3939
},
4040
{
4141
"identity" : "swift-docc-symbolkit",
4242
"kind" : "remoteSourceControl",
43-
"location" : "https://github.com/apple/swift-docc-symbolkit",
43+
"location" : "https://github.com/swiftlang/swift-docc-symbolkit",
4444
"state" : {
4545
"revision" : "b45d1f2ed151d057b54504d653e0da5552844e34",
4646
"version" : "1.0.0"

Sources/AppKitBackend/AppKitBackend.swift

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -154,11 +154,10 @@ public final class AppKitBackend: AppBackend {
154154
) -> (menuBar: NSMenu, helpMenu: NSMenu?) {
155155
let menuBar = NSMenu()
156156

157-
// The first menu item is special and always takes on the name of the
158-
// app. For now just create a dummy item for it.
159-
let dummy = NSMenuItem()
160-
dummy.submenu = NSMenu()
161-
menuBar.addItem(dummy)
157+
// The first menu item is special and always takes on the name of the app.
158+
let about = NSMenuItem()
159+
about.submenu = createDefaultAboutMenu()
160+
menuBar.addItem(about)
162161

163162
var helpMenu: NSMenu?
164163
for submenu in submenus {
@@ -173,6 +172,26 @@ public final class AppKitBackend: AppBackend {
173172
return (menuBar, helpMenu)
174173
}
175174

175+
public static func createDefaultAboutMenu() -> NSMenu {
176+
let appName = ProcessInfo.processInfo.processName
177+
let appMenu = NSMenu(title: appName)
178+
appMenu.addItem(withTitle: "About \(appName)", action: #selector(NSApp.orderFrontStandardAboutPanel(_:)), keyEquivalent: "")
179+
appMenu.addItem(NSMenuItem.separator())
180+
181+
let hideMenu = appMenu.addItem(withTitle: "Hide \(appName)", action: #selector(NSApp.hide(_:)), keyEquivalent: "h")
182+
hideMenu.keyEquivalentModifierMask = .command
183+
184+
let hideOthers = appMenu.addItem(withTitle: "Hide Others", action: #selector(NSApp.hideOtherApplications(_:)), keyEquivalent: "h")
185+
hideOthers.keyEquivalentModifierMask = [.option, .command]
186+
187+
appMenu.addItem(withTitle: "Show All", action: #selector(NSApp.unhideAllApplications(_:)), keyEquivalent: "")
188+
189+
let quitMenu = appMenu.addItem(withTitle: "Quit \(appName)", action: #selector(NSApp.terminate(_:)), keyEquivalent: "q")
190+
quitMenu.keyEquivalentModifierMask = .command
191+
192+
return appMenu
193+
}
194+
176195
public func setApplicationMenu(_ submenus: [ResolvedMenu.Submenu]) {
177196
let (menuBar, helpMenu) = Self.renderMenuBar(submenus)
178197
NSApplication.shared.mainMenu = menuBar

0 commit comments

Comments
 (0)