On Nov 25, 2011, at 7:17 PM, Steven Spencer wrote:

> I'm using a NSTrackingArea in a view to receive mouseMoved events.
> The cursor location in the mouseMoved and mouseDragged events have 
> non-integer coordinates (as expected).
> e.g. x:140.601562 y:128.082031
> 
> However, the mouseDown and mouseUp events always produce truncated 
> coordinates.
> e.g. x:140.000000 y:128.000000

We've seen this, too.  It started happening with Lion.

I also don't think it's quite "as expected".  Among other things, the 
fractional part is generally constant for long periods, even while the integral 
part changes.  That is, you're not seeing high-precision movement, just 
non-integral coordinates.


> This causes inaccuracy with hit testing between mouseMoved and mouseDown.

> What is the correct way to obtain coordinates that are consistent across all 
> the mouse events ?

As Jens suggested, you may wish to truncate the mouseMoved coordinates 
yourself.  Or, you may need to use floor().  You should check what happens for 
a display to the left and/or above the primary, which would have negative 
coordinates.

On the other hand, how is it causing inaccuracy?  How are you using the 
coordinates such that the difference is significant.  You generally shouldn't 
use '==' to compare floating point numbers in any case, for example.

Regards,
Ken

_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to