summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorStefano Pigozzi <stefano.pigozzi@gmail.com>2013-09-28 10:09:57 +0200
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2013-09-28 11:20:00 +0200
commit67d87d36d52baf5237f24c4bf5d83426362f25b0 (patch)
treecbcf64a0e70b541afbcdd278c8b5a68641f766b0 /video
parent0ab9634eb3f3005c37a0346d9035dbc4d4abd144 (diff)
downloadmpv-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')
-rw-r--r--video/out/cocoa/view.m20
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];
}