diff -r c3f2f16fa4b8 -r dde28a806552 ui/cocoa/Toolbar.m --- a/ui/cocoa/Toolbar.m Sun Oct 19 21:20:08 2025 +0200 +++ b/ui/cocoa/Toolbar.m Mon Nov 10 21:52:51 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; }