Thanks for your comments. > My first instinct when someone says "not reproducible for me with a scroll > view" on Mac is: Maybe it only occurs with overlay scrollers, or only with > separate scrollers? Have you tried toggling that setting?
If you mean the "show scroll bars" setting in System Preferences/General then yes, I did try all settings without success (in reproducing). I also know that this setting is not all set the same way for all of the complaining users. > Also, are you calling setNeedsDisplay: or setNeedsDisplayInRect: anywhere? > That's usually how you cause redraws. I'm calling it where appropriate (afaik) to redraw the display when the text changes or when the selection changes, among other things. > > If this is only while scrolling, are you perhaps doing things in drawRect: > that you shouldn't? drawRect: should only draw when the OS calls it. Calling > drawRect: directly is not supported. Changing state inside drawRect: or > calling setNeedsDisplay: or moving or resizing views or windows is not > supported in drawRect:. These things often work by accident though, so I've > seem lots of code naïvely doing it. I'm not doing that. Also, this code is years old and worked correctly for many many users on other systems. I'm supporting (and have users on) all versions of macOS down to 10.7 and I only get complaints from (some) users on Catalina. Of-course, this doesn't mean that the code doesn't have issues since I've already learned the hard way that some things that were forgiven in the past are no longer tolerated on Catalina (for example, adding more then 256 cursor rects to a view) so it could be that somewhere, somehow I am doing something illegitimate but it is showing only now on Catalina. So, to check this theory I made a special build of the app that allowed turning off drawing of the page views or of the page container view. Based on a user defaults setting the app would simply do nothing in drawRect for the page page view or for the container view. My users tried both of these settings and in both cases the problem persisted. So, even with drawRect doing nothing, the problem still shows up. > Similarly, NSView etc. only work when used from the main thread, if you are > calling methods on views from a secondary thread (like a Dispatch Queue, or a > callback that isn't guaranteed to be on the main thread), it might work by > accident, but it is unsupported and unsafe. I am aware of this. The only thing that could be even remotely related is that there's a timer that blinks the cursor (triggering an update view setNeedsDisplay, this code predates dispatch queue by many years and afaik, it is called on the main thread. I'm doing most of the work on the main thread anyway but I will review my very little (unrelated to drawing as far as I can recall) code, maybe somehow... > Finally, are you maybe forgetting to apply layout constraints to any of your > views, or forgot to set its translatesAutoresizingMaskIntoConstraints > properly somewhere? That could cause a view to have the wrong size and clip. I'm not using auto-layout in this view (I supported 10.6 until recently so this wasn't available for me). I'm trying to think how this could be related - perhaps auto-layout is trying to work its magic ignoring the fact that is is not turned on officially for that view/window but I'm not really seeing it. Timing-wise, the artifacts are not related to the views being moved, the views can be moved when resizing the window or when changing the document zoom level and the container view size can change when adding/removing pages or changing the zoom level but the artifacts show up when scrolling and only then. Scrolling also is what usually fixes the artifact, when the user continues to scroll then subsequent pages will appear and then when he scrolls back to the trouble area the page will be there. It does look related to clipping, the page view can be cut in the middle and the drawing of the shadow (done on the container view) is also cut at the same place. Eyal _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com