I started wondering after I saw jerky scrolling in my app when it draws a lot of curves (NSBezierPath), under Sonoma.
So I made a simple Cocoa app, using the Xcode 15 objC template. The app only has a NSView subclass as a document view of an NSScrollView (not a subclass), which has copiesOnScroll set to YES.
The document view returns YES to isOpaque and its class returns YES to isCompatibleWithResponsiveScrolling.
Yet whenever I scroll, -drawRect is called on the document view and the dirtyRect passed is the same as its visibleRect. i.e., the view is asked to redraw its whole visible content at every scroll step. Clearly, responsive scrolling isn't working.
I tried setting wantsLayer to YES or NO, it doesn't change anything.
prepareContentInRect is called, but it doesn't seem that the rect argument covers a region of the view that is not visible.
Am I doing something wrong or is responsive scrolling a thing of the past?