1
votes

I have an NSTableView with floating group rows which I can make transparent easily. However no matter what I do, setting the rowView backgroundFilters to have a CIGaussianBlur has no effect.

The view containing the NSTableView (and the acompanying NSScrollView and NSClipView) wants a layer. And I have confirmed in didAddRowView that the rowView has a layer with the backgroundFilter set.

I can reproduce this blur with any other plain NSView, it just won't work when applied to the tableview row view. I just want to understand why, and can I do something about it?

1
Did you ever figure this out (or come up with a clever workaround)? I'm facing a similar situation, and as always, Apple's super top secret implementation of floating group rows is driving me up the wall. I just added a minimum height layout constraint on my scroll view and when I resized the window, the group view stretched/shrank with it. I guess that explains a little bit about how the group row view works. They must be setting it as the layer's content. I'll see if changing the view's layer redraw policy does anything, but I'm not gonna hold my breath.Ben Stock
I didn't. I ended dropping the blur for the floating rows. Haven't had the chance to test the new NSVisualEffectsView though.pfandrade

1 Answers

1
votes

I would guess that since the group row view is sometimes drawn with partial transparency in the TableView, that they have done some hacks where they have it draw into an offscreen buffer and then composite that buffer onto the screen themselves, so it doesn’t matter what effects you’ve added to the background, because the offscreen buffer is always just filled with transparency.