@@ -154,11 +154,10 @@ public final class AppKitBackend: AppBackend {
154
154
) -> ( menuBar: NSMenu , helpMenu: NSMenu ? ) {
155
155
let menuBar = NSMenu ( )
156
156
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)
162
161
163
162
var helpMenu : NSMenu ?
164
163
for submenu in submenus {
@@ -173,6 +172,26 @@ public final class AppKitBackend: AppBackend {
173
172
return ( menuBar, helpMenu)
174
173
}
175
174
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
+
176
195
public func setApplicationMenu( _ submenus: [ ResolvedMenu . Submenu ] ) {
177
196
let ( menuBar, helpMenu) = Self . renderMenuBar ( submenus)
178
197
NSApplication . shared. mainMenu = menuBar
0 commit comments