@@ -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