I'm seeing the same problem. I was investigating the titlebar itself, your post helped me by identifying the real culprit - thanks!
The use of NSSplitViewController is not relevant, it's enough to e.g. put NSTableView inside a titlebar-less window with NSWindowStyleMaskFullSizeContentView, titleVisibility = NSWindowTitleHidden and titlebarAppearsTransparent = YES. Despite having no visible titlebar, the pocket meant for it is still present.
My affected window is essentially the same thing as Xcode's welcome window, which however doesn't suffer from it, so I wonder what they do differently...
I don't think there's any public API for this, certainly not documented one, scrollEdgeEffectStyle is SwiftUI-only. You can see that WebKit has to do some private API sorcery with NSScrollPocket...
In my case at least, hiding the pocket is enough to fix the visual artifacts, so I grudgingly resorted to that:
static NSView* FindSubviewOfClass(NSView *root, Class cls)
{
if (!root || !cls)
return nil;
for (NSView *sub in root.subviews) {
if ([sub class] == cls) {
return sub;
}
NSView *found = FindSubviewOfClass(sub, cls);
if (found)
return found;
}
return nil;
}
...
NSView *pocket = FindSubviewOfClass(scrollView, @"NSScrollPocket");
if (pocket)
pocket.hidden = YES;
Topic:
UI Frameworks
SubTopic:
AppKit