Search code examples
cocoansscrollview

How to fill the right bottom corner of NSScrollView?


I want to change its color, but I'm not sure wether to subclass NSScrollView or NSClipView. Or if the corner can be inserted as a regular NSView.

Shows the white corner in a NSScrollView
(source: flickr.com)

I don't need code. Just a hint at how to do it.


Solution

  • Already answered elsewhere on stackoverflow by mekentosj. The class to subclass is NSScrollView.

    @interface MyScrollView : NSScrollView {
    }
    @end
    
    
    @implementation MyScrollView
    
    - (void)drawRect:(NSRect)rect{
        [super drawRect: rect];
    
        if([self hasVerticalScroller] && [self hasHorizontalScroller]){
            NSRect vframe = [[self verticalScroller]frame];
            NSRect hframe = [[self horizontalScroller]frame];
            NSRect corner;
            corner.origin.x = NSMaxX(hframe);
            corner.origin.y = NSMinY(hframe);
            corner.size.width = NSWidth(vframe);
            corner.size.height = NSHeight(hframe);
    
            // your custom drawing in the corner rect here
            [[NSColor redColor] set];
            NSRectFill(corner);
        }
    }
    @end