add label/icon check when creating toolbar toggle items (Cocoa)

Wed, 27 May 2026 15:16:32 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 27 May 2026 15:16:32 +0200
changeset 1144
6e9da0736c33
parent 1143
218ada0d4017
child 1145
57cc5fc047f3

add label/icon check when creating toolbar toggle items (Cocoa)

ui/cocoa/Toolbar.m file | annotate | diff | comparison | revisions
ui/cocoa/toolkit.m file | annotate | diff | comparison | revisions
--- a/ui/cocoa/Toolbar.m	Wed May 27 15:04:53 2026 +0200
+++ b/ui/cocoa/Toolbar.m	Wed May 27 15:16:32 2026 +0200
@@ -243,14 +243,23 @@
     }
     objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
     
-    NSSegmentedControl *seg;
+    NSSegmentedControl *seg = nil;
     if(!item->args.icon) {
-        NSArray *labels = @[[[NSString alloc] initWithUTF8String:item->args.label]];
-        seg = [NSSegmentedControl segmentedControlWithLabels:labels trackingMode:NSSegmentSwitchTrackingSelectAny target:event action:@selector(handleEvent:)];
-        button.view = seg;
+        if(item->args.label) {
+            NSArray *labels = @[[[NSString alloc] initWithUTF8String:item->args.label]];
+            seg = [NSSegmentedControl segmentedControlWithLabels:labels trackingMode:NSSegmentSwitchTrackingSelectAny target:event action:@selector(handleEvent:)];
+            button.view = seg;
+        } else {
+            NSLog(@"UI Error: toggle button has no icon or label");
+        }
     } else {
-        NSArray *images = @[ui_cocoa_named_icon(item->args.icon)];
-        seg = [NSSegmentedControl segmentedControlWithImages:images trackingMode:NSSegmentSwitchTrackingSelectAny target:event action:@selector(handleEvent:)];
+        NSImage *image = ui_cocoa_named_icon(item->args.icon);
+        if(image != nil) {
+            NSArray *images = @[image];
+            seg = [NSSegmentedControl segmentedControlWithImages:images trackingMode:NSSegmentSwitchTrackingSelectAny target:event action:@selector(handleEvent:)];
+        } else {
+            NSLog(@"UI Error: icon %s not found", item->args.icon);
+        }
     }
     button.view = seg;
     
@@ -265,7 +274,6 @@
             
         }
         i->obj = (__bridge void*)seg;
-        printf("seg: %p\n", seg);
         i->get = ui_toolbar_seg_toggleitem_get;
         i->set = ui_toolbar_seg_toggleitem_set;
     }
--- a/ui/cocoa/toolkit.m	Wed May 27 15:04:53 2026 +0200
+++ b/ui/cocoa/toolkit.m	Wed May 27 15:16:32 2026 +0200
@@ -76,11 +76,6 @@
     
     app_delegate = [[AppDelegate alloc] init];
     
-    if(app.delegate != nil) {
-        printf("app delegate exists\n");
-    } else {
-        printf("app delegate is null\n");
-    }
     fflush(stdout);
     app.delegate = app_delegate;
     

mercurial