diff options
author | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-09-28 10:09:57 +0200 |
---|---|---|
committer | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2013-09-28 11:20:00 +0200 |
commit | 67d87d36d52baf5237f24c4bf5d83426362f25b0 (patch) | |
tree | cbcf64a0e70b541afbcdd278c8b5a68641f766b0 /video/out/cocoa | |
parent | 0ab9634eb3f3005c37a0346d9035dbc4d4abd144 (diff) | |
download | mpv-67d87d36d52baf5237f24c4bf5d83426362f25b0.tar.bz2 mpv-67d87d36d52baf5237f24c4bf5d83426362f25b0.tar.xz |
cocoa_common: report pixels instead of points during mouse movement
This fixes the position reporting on retina displays. Doesn't make any
difference on normal displays where 1px = 1pt.
Fixes: #260
Diffstat (limited to 'video/out/cocoa')
-rw-r--r-- | video/out/cocoa/view.m | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/video/out/cocoa/view.m b/video/out/cocoa/view.m index bac485b225..2ae81abda9 100644 --- a/video/out/cocoa/view.m +++ b/video/out/cocoa/view.m @@ -94,8 +94,7 @@ - (NSPoint)mouseLocation { - NSPoint wLoc = [self.window mouseLocationOutsideOfEventStream]; - return [self convertPoint:wLoc fromView:nil]; + return [self.window mouseLocationOutsideOfEventStream]; } - (BOOL)containsMouseLocation @@ -103,10 +102,11 @@ NSRect vF = [[self.window screen] visibleFrame]; NSRect vFW = [self.window convertRectFromScreen:vF]; NSRect vFV = [self convertRect:vFW fromView:nil]; + NSPoint pt = [self convertPoint:[self mouseLocation] fromView:nil]; // clip bounds to current visibleFrame NSRect clippedBounds = CGRectIntersection([self bounds], vFV); - return CGRectContainsPoint(clippedBounds, [self mouseLocation]); + return CGRectContainsPoint(clippedBounds, pt); } - (BOOL)acceptsFirstMouse:(NSEvent *)theEvent { return YES; } @@ -140,15 +140,25 @@ [self signalMousePosition]; } +- (NSPoint)convertPointToPixels:(NSPoint)point +{ + point = [self convertPoint:point fromView:nil]; + point = [self convertPointToBacking:point]; + // flip y since isFlipped returning YES doesn't affect the backing + // coordinate system + point.y = -point.y; + return point; +} + - (void)signalMousePosition { - NSPoint p = [self convertPoint:[self mouseLocation] fromView:nil]; + NSPoint p = [self convertPointToPixels:[self mouseLocation]]; [self.adapter signalMouseMovement:p]; } - (void)signalMouseMovement:(NSEvent *)event { - NSPoint p = [self convertPoint:[event locationInWindow] fromView:nil]; + NSPoint p = [self convertPointToPixels:[event locationInWindow]]; [self.adapter signalMouseMovement:p]; } |