From 616a8c32ce96dad836c5a9746623cbec42a4fafa Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Fri, 7 Apr 2023 04:17:52 +0200 Subject: [PATCH 1/2] sokol_app.h macos: quit menu --- sokol_app.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sokol_app.h b/sokol_app.h index 4b3d62cc3..4d5666cb7 100644 --- a/sokol_app.h +++ b/sokol_app.h @@ -3765,6 +3765,26 @@ _SOKOL_PRIVATE void _sapp_macos_frame(void) { _sapp.macos.window.acceptsMouseMovedEvents = YES; _sapp.macos.window.restorable = YES; + // Quit menu + NSMenu* menu_bar = [[NSMenu alloc] init]; + NSMenuItem* app_menu_item = [[NSMenuItem alloc] init]; + [menu_bar addItem:app_menu_item]; + NSApp.mainMenu = menu_bar; + NSMenu* app_menu = [[NSMenu alloc] init]; + NSString* window_title_as_nsstring = [NSString stringWithUTF8String:_sapp.window_title]; + // `quit_title` memory will be owned by the NSMenuItem, so no need to release it ourselves + NSString* quit_title = [@"Quit " stringByAppendingString:window_title_as_nsstring]; + NSMenuItem* quit_menu_item = [[NSMenuItem alloc] + initWithTitle:quit_title + action:@selector(terminate:) + keyEquivalent:@"q"]; + [app_menu addItem:quit_menu_item]; + app_menu_item.submenu = app_menu; + _SAPP_OBJC_RELEASE(window_title_as_nsstring); + _SAPP_OBJC_RELEASE(app_menu); + _SAPP_OBJC_RELEASE(app_menuitem); + _SAPP_OBJC_RELEASE(menu_bar); + _sapp.macos.win_dlg = [[_sapp_macos_window_delegate alloc] init]; _sapp.macos.window.delegate = _sapp.macos.win_dlg; #if defined(SOKOL_METAL) From dff696164b2f8e03a45e841ea3a2cb0c15483cb8 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Fri, 7 Apr 2023 06:09:32 +0200 Subject: [PATCH 2/2] fix --- sokol_app.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sokol_app.h b/sokol_app.h index 4d5666cb7..8aca6938d 100644 --- a/sokol_app.h +++ b/sokol_app.h @@ -3782,7 +3782,7 @@ _SOKOL_PRIVATE void _sapp_macos_frame(void) { app_menu_item.submenu = app_menu; _SAPP_OBJC_RELEASE(window_title_as_nsstring); _SAPP_OBJC_RELEASE(app_menu); - _SAPP_OBJC_RELEASE(app_menuitem); + _SAPP_OBJC_RELEASE(app_menu_item); _SAPP_OBJC_RELEASE(menu_bar); _sapp.macos.win_dlg = [[_sapp_macos_window_delegate alloc] init];