I have an NSWindow with a 32px bottom content border. Inside the window’s view, I have two custom subviews. Each of them are layer backed, and I’m tracking the mouse with an NSTrackingArea. Part of what I’m doing is some mouseOver effects with CoreAnimation. This is not a problem in general, but I noticed something kind of strange and wondered if anyone knows why this is happening.
When setting up the trackingArea and mouseOver method, I hitTest the root layer and log the layer’s name so I can see if the geometry of the various sublayers hold water when I resize the window. Internally, they seem (and look) fine. Visually, they are in the right place, but when I move the mouse, I notice that the though the mouse is physically over a layer, hitTest is returning whatever layer is 32 px above it. However, if I remove the content border, it works as you would expect and the correct layer is returned.
I obviously need the content border, so I have a very simple workaround which involves offsetting the hitTest point by 32px. This works fine, but it just seems weird that the presence of a content border seems to skewing the co-ordinate system of these subviews. Does anyone know why this could be happening?
NSEventreturns mouse locations relative to the window’s coordinate system, not the targeted view’s. You probably need to callconvertRect:fromView:to get the correct coordinates.