ui/cocoa/Toolbar.m

changeset 708
0598e70c6489
parent 707
e9f63774b0e0
child 709
131d38916ac7
--- 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 <objc/runtime.h>
 
 #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;
+}

mercurial