diff -r e9f63774b0e0 -r 0598e70c6489 ui/cocoa/Toolbar.m --- a/ui/cocoa/Toolbar.m Sat Aug 23 10:23:16 2025 +0200 +++ b/ui/cocoa/Toolbar.m Sat Aug 23 11:45:10 2025 +0200 @@ -29,6 +29,7 @@ #import "Toolbar.h" #import "EventData.h" #import "image.h" +#import "menu.h" #import #include "../common/toolbar.h" @@ -104,6 +105,9 @@ case UI_TOOLBAR_TOGGLEITEM: { return ui_nstoolbaritem_create_toggle(_obj, (UiToolbarToggleItem*)item, itemIdentifier); } + case UI_TOOLBAR_MENU: { + return ui_nstoolbaritem_create_menu(_obj, (UiToolbarMenuItem*)item, itemIdentifier); + } } return nil; @@ -151,7 +155,6 @@ button.label = label; } if(item->args.icon) { - //button.image = [NSImage imageNamed: [[NSString alloc] initWithUTF8String:item->args.icon]]; button.image = ui_cocoa_named_icon(item->args.icon); } @@ -219,3 +222,24 @@ i->value = value; [seg setSelected:value != 0 forSegment:0]; } + +NSToolbarItem* ui_nstoolbaritem_create_menu(UiObject *obj, UiToolbarMenuItem *item, NSString *identifier) { + NSMenuToolbarItem *button = [[NSMenuToolbarItem alloc] initWithItemIdentifier: identifier]; + button.bordered = YES; + + if(item->args.label) { + NSString *label = [[NSString alloc] initWithUTF8String:item->args.label]; + button.paletteLabel = label; + button.label = label; + } + if(item->args.icon) { + button.image = ui_cocoa_named_icon(item->args.icon); + } + + NSMenu *menu = [[NSMenu alloc] initWithTitle:@""]; + ui_add_menu_items(menu, 0, &item->menu); + + button.menu = menu; + + return button; +}