views:

31

answers:

1

Hi everyone, I am making custom NSScrollers for use in NSScrollView. But when any of the superviews of the NSScroller gets Core Animation enabled. I get this drawing issue that's a huge nuisance. Whenever i scroll into the corners of the scroll view the scrollers clip. But if a scroller starts out drawing in the corner, the scroller part stays in that corner. What could be causing this problem? I have too much code to show on here. But here is my drawing code:

NSRect knobRect = [self rectForPart:NSScrollerKnob];

NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:knobRect 
                                                     xRadius:CornerRadius 
                                                     yRadius:CornerRadius];

[path setLineWidth:2];
[[NSColor colorWithDeviceRed:0.114 green:0.114 blue:0.114 alpha:0.3] set];
[path fill];
[[NSColor colorWithDeviceWhite:1.0 
                         alpha:0.100] set];

    // Clip drawing to this path; draw nothing outwith the path. 
[path addClip];
[path stroke];

I already tried to get rid of everything except the fill but it didnt work. This issue goes away if I call setNeedsDisplay:YES on the super view when setFloatValue is called.

Clipping Issue

A: 

it seems that the answer to the problem seems to be to call:
[self setArrowsPosition:NSScrollerArrowsNone]; And it magically works :D

Edit, but I get a similar effect when I drag the scrollbar. :'( Is there anyway to clear the graphics without redrawing the scrollview itself? :(

Alex Zielenski