diff -r 2131c806440d -r aff9ad6a54a1 ui/cocoa/Toolbar.m --- a/ui/cocoa/Toolbar.m Sun Oct 26 10:30:02 2025 +0100 +++ b/ui/cocoa/Toolbar.m Sun Oct 26 13:10:46 2025 +0100 @@ -45,13 +45,21 @@ @implementation UiToolbar -- (UiToolbar*) initWithObject:(UiObject*)object { +- (UiToolbar*) initWithWindow:(MainWindow*)window { self = [super initWithIdentifier:@"UiToolbar"]; - _obj = object; + _window = window; + _obj = window.obj; allowedItems = [[NSMutableArray alloc]initWithCapacity:16]; defaultItems = [[NSMutableArray alloc]initWithCapacity:16]; + if(window.sidebar) { + [allowedItems addObject:@"sidebar_separator"]; + } + if(window.leftPanel) { + [allowedItems addObject:@"splitview_separator"]; + } + CxMap *toolbarItems = uic_get_toolbar_items(); CxMapIterator i = cxMapIteratorKeys(toolbarItems); cx_foreach(CxHashKey *, key, i) { @@ -61,18 +69,59 @@ [allowedItems addObject: NSToolbarFlexibleSpaceItemIdentifier]; [allowedItems addObject: NSToolbarSpaceItemIdentifier]; - CxList *tbitems[3]; - tbitems[0] = uic_get_toolbar_defaults(UI_TOOLBAR_LEFT); - tbitems[1] = uic_get_toolbar_defaults(UI_TOOLBAR_CENTER); - tbitems[2] = uic_get_toolbar_defaults(UI_TOOLBAR_RIGHT); - for(int t=0;t<3;t++) { - CxIterator iter = cxListIterator(tbitems[t]); + // UI_TOOLBAR_LEFT = 0, + // UI_TOOLBAR_CENTER, + // UI_TOOLBAR_RIGHT, + // UI_TOOLBAR_SIDEBAR_LEFT, + // UI_TOOLBAR_SIDEBAR_RIGHT, + // UI_TOOLBAR_RIGHTPANEL_LEFT, + // UI_TOOLBAR_RIGHTPANEL_CENTER, + // UI_TOOLBAR_RIGHTPANEL_RIGHT + CxList *tbitems[8]; + for(int i=0;i<8;i++) { + tbitems[i] = uic_get_toolbar_defaults(i); + } + + if(window.sidebar) { + CxIterator iter = cxListIterator(tbitems[UI_TOOLBAR_SIDEBAR_LEFT]); cx_foreach(char *, name, iter) { NSString *s = [[NSString alloc] initWithUTF8String:name]; [defaultItems addObject:s]; } + + CxList *sidebarRight = tbitems[UI_TOOLBAR_SIDEBAR_RIGHT]; + if(cxListSize(sidebarRight) > 0) { + [defaultItems addObject:NSToolbarFlexibleSpaceItemIdentifier]; + iter = cxListIterator(sidebarRight); + cx_foreach(char *, name, iter) { + NSString *s = [[NSString alloc] initWithUTF8String:name]; + [defaultItems addObject:s]; + } + } + + [defaultItems addObject:@"sidebar_separator"]; } + int start_pos = UI_TOOLBAR_LEFT; + for(int x=0;x<2;x++) { + for(int t=start_pos;t 0) { + [defaultItems addObject:NSToolbarFlexibleSpaceItemIdentifier]; + } + } + + if(x == 0 && window.rightPanel) { + [defaultItems addObject:@"splitview_separator"]; + } + start_pos = UI_TOOLBAR_RIGHTPANEL_LEFT; + } + + [self setDelegate:self]; [self setAllowsUserCustomization:YES]; return self; @@ -94,6 +143,18 @@ CxMap *items = uic_get_toolbar_items(); UiToolbarItemI *item = cxMapGet(items, itemIdentifier.UTF8String); if(!item) { + if([itemIdentifier isEqualToString:@"sidebar_separator"]) { + NSTrackingSeparatorToolbarItem *sep = [NSTrackingSeparatorToolbarItem trackingSeparatorToolbarItemWithIdentifier:itemIdentifier + splitView:_window.splitview + dividerIndex:0]; + return sep; + } else if([itemIdentifier isEqualToString:@"splitview_separator"]) { + int dividerIndex = _window.sidebar != nil ? 1 : 0; + NSTrackingSeparatorToolbarItem *sep = [NSTrackingSeparatorToolbarItem trackingSeparatorToolbarItemWithIdentifier:itemIdentifier + splitView:_window.splitview + dividerIndex:dividerIndex]; + return sep; + } return nil; }