IKImageBrowserView causes subtle shift in scroll view border drawing

Originator:jalkut
Number:rdar://21074478 Date Originated:22-May-2015 10:24 AM
Status:Open Resolved:
Product:OS X Product Version:10.10.4
Classification:UI/Usability Reproducible:Always
 
Summary:
An IKImageBrowserView that is embedded in an NSScrollView that draws its own border will cause the position of the border to shift subtley such that e.g. if it's embedded in a split view, a visual flicker can be perceived as the border draws sometimes at full size and sometimes at a fractional size.

The bug can be reproduced by simply taking Apple's own IKImageBrowserView sample code and embedding the view (with scroll view) in a split view. The attached sample project was derived in this manner.

Steps to Reproduce:
Note: you may need to use a Mac with Retina display to easily reproduce this problem, as I think it has to do with non-integral offsets in the scroll view and child views' frames.

1. Open attached sample project.
2. Build and run.
3. Click the split view divider and scroll up and down slowly, looking carefully at the top edge of the image browser view.

Expected Results:
The border line drawn by the NSScrollView should be solid and steady as you scroll, and whenever the mouse is released, the size of the top border should remain consistent.

Actual Results:
The top border line of the NSScrollView is drawn thicker or thinner depending on the precise size of the image view.



Version:
10.10.4 (14E17e)

Notes:
- The image view needs to be filled with icons in order for the bug to occur.
- Turning on Core Animation layer backing for the window works around the bug.

Configuration:


Attachments:
'ImageBrowser.zip' was successfully uploaded.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!