A Solution: It appears that setNeedsDisplay has changed. My family tree is drawn in 2 passes: pass 1 calculates size of each tree cell. When that is done, tree cells (which are subviews in the main NSView) are moved to fill space by various options. Pass 2 then redraws all cells in their new proper locations.
My code called setNeedsDisplay on the main NSView after subviews are repositioned. Before Sequoia, this caused the entire view to redraw, but in Sequoia, only the main view gets redrawn. All subviews remain as they were draw during pass 1. The fix was to explicitly call setNeedsDisplay for every subview as well. I see setNeedsDisplay is deprecated, but it seems to have changed now too.
I still see subview cells drawing in reverse order compared to prior MacOS versions. Because I move cells to avoid overlap, it is not a problem in my window. It seems like that change would affect any application where subviews might overlap (and therefore drawing order would matter).
Topic:
UI Frameworks
SubTopic:
AppKit
Tags: