Examples: Apple: add native menu with Quit entry. Add missing title text. Standardize code.

This commit is contained in:
ocornut 2026-11-04 18:14:26 +01:00
parent 9d0b72573a
commit b2298afa71
5 changed files with 45 additions and 24 deletions

1
.gitignore vendored
View File

@ -66,6 +66,7 @@ cmake-build-*
## Unix executables from our example Makefiles ## Unix executables from our example Makefiles
examples/example_apple_metal/example_apple_metal examples/example_apple_metal/example_apple_metal
examples/example_apple_metal4/example_apple_metal4
examples/example_apple_opengl2/example_apple_opengl2 examples/example_apple_opengl2/example_apple_opengl2
examples/example_apple_opengl3/example_apple_opengl3 examples/example_apple_opengl3/example_apple_opengl3
examples/example_glfw_metal/example_glfw_metal examples/example_glfw_metal/example_glfw_metal

View File

@ -273,6 +273,20 @@
@implementation AppDelegate @implementation AppDelegate
-(void)applicationDidFinishLaunching:(NSNotification *)notification
{
NSMenu* mainMenuBar = [[NSMenu alloc] init];
NSMenu* appMenu = [[NSMenu alloc] initWithTitle:@"Dear ImGui OSX+Metal Example"];
NSMenuItem* quitMenuItem = [appMenu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"];
[quitMenuItem setTarget:NSApp];
[quitMenuItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand];
NSMenuItem* appMenuItem = [[NSMenuItem alloc] init];
[appMenuItem setSubmenu:appMenu];
[mainMenuBar addItem:appMenuItem];
[NSApp setMainMenu:mainMenuBar];
}
-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender -(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
{ {
return YES; return YES;
@ -287,6 +301,7 @@
styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskResizable | NSWindowStyleMaskMiniaturizable styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskResizable | NSWindowStyleMaskMiniaturizable
backing:NSBackingStoreBuffered backing:NSBackingStoreBuffered
defer:NO]; defer:NO];
self.window.title = @"Dear ImGui OSX+Metal Example";
self.window.contentViewController = rootViewController; self.window.contentViewController = rootViewController;
[self.window center]; [self.window center];
[self.window makeKeyAndOrderFront:self]; [self.window makeKeyAndOrderFront:self];

View File

@ -289,6 +289,20 @@
@implementation AppDelegate @implementation AppDelegate
-(void)applicationDidFinishLaunching:(NSNotification *)notification
{
NSMenu* mainMenuBar = [[NSMenu alloc] init];
NSMenu* appMenu = [[NSMenu alloc] initWithTitle:@"Dear ImGui OSX+Metal4 Example"];
NSMenuItem* quitMenuItem = [appMenu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"];
[quitMenuItem setTarget:NSApp];
[quitMenuItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand];
NSMenuItem* appMenuItem = [[NSMenuItem alloc] init];
[appMenuItem setSubmenu:appMenu];
[mainMenuBar addItem:appMenuItem];
[NSApp setMainMenu:mainMenuBar];
}
-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender -(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
{ {
return YES; return YES;
@ -303,6 +317,7 @@
styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskResizable | NSWindowStyleMaskMiniaturizable styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskResizable | NSWindowStyleMaskMiniaturizable
backing:NSBackingStoreBuffered backing:NSBackingStoreBuffered
defer:NO]; defer:NO];
self.window.title = @"Dear ImGui OSX+Metal4 Example";
self.window.contentViewController = rootViewController; self.window.contentViewController = rootViewController;
[self.window center]; [self.window center];
[self.window makeKeyAndOrderFront:self]; [self.window makeKeyAndOrderFront:self];

View File

@ -191,19 +191,14 @@
-(void)setupMenu -(void)setupMenu
{ {
NSMenu* mainMenuBar = [[NSMenu alloc] init]; NSMenu* mainMenuBar = [[NSMenu alloc] init];
NSMenu* appMenu; NSMenu* appMenu = [[NSMenu alloc] initWithTitle:@"Dear ImGui OSX+OpenGL2 Example"];
NSMenuItem* menuItem; NSMenuItem* quitMenuItem = [appMenu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"];
[quitMenuItem setTarget:NSApp];
[quitMenuItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand];
appMenu = [[NSMenu alloc] initWithTitle:@"Dear ImGui OSX+OpenGL2 Example"]; NSMenuItem* appMenuItem = [[NSMenuItem alloc] init];
menuItem = [appMenu addItemWithTitle:@"Quit Dear ImGui OSX+OpenGL2 Example" action:@selector(terminate:) keyEquivalent:@"q"]; [appMenuItem setSubmenu:appMenu];
[menuItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand]; [mainMenuBar addItem:appMenuItem];
menuItem = [[NSMenuItem alloc] init];
[menuItem setSubmenu:appMenu];
[mainMenuBar addItem:menuItem];
appMenu = nil;
[NSApp setMainMenu:mainMenuBar]; [NSApp setMainMenu:mainMenuBar];
} }

View File

@ -191,19 +191,14 @@
-(void)setupMenu -(void)setupMenu
{ {
NSMenu* mainMenuBar = [[NSMenu alloc] init]; NSMenu* mainMenuBar = [[NSMenu alloc] init];
NSMenu* appMenu; NSMenu* appMenu = [[NSMenu alloc] initWithTitle:@"Dear ImGui OSX+OpenGL3 Example"];
NSMenuItem* menuItem; NSMenuItem* quitMenuItem = [appMenu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"];
[quitMenuItem setTarget:NSApp];
[quitMenuItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand];
appMenu = [[NSMenu alloc] initWithTitle:@"Dear ImGui OSX+OpenGL3 Example"]; NSMenuItem* appMenuItem = [[NSMenuItem alloc] init];
menuItem = [appMenu addItemWithTitle:@"Quit Dear ImGui OSX+OpenGL3 Example" action:@selector(terminate:) keyEquivalent:@"q"]; [appMenuItem setSubmenu:appMenu];
[menuItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand]; [mainMenuBar addItem:appMenuItem];
menuItem = [[NSMenuItem alloc] init];
[menuItem setSubmenu:appMenu];
[mainMenuBar addItem:menuItem];
appMenu = nil;
[NSApp setMainMenu:mainMenuBar]; [NSApp setMainMenu:mainMenuBar];
} }