mirror of
https://github.com/SFML/SFML.git
synced 2024-11-25 04:41:05 +08:00
Fixed OS X implementation of sf::Mouse::(get|set)Position
The code was not updated at all when support for retina display was introduced.
This commit is contained in:
parent
3f61214571
commit
46be2159cb
@ -133,7 +133,8 @@ Vector2i InputImpl::getMousePosition()
|
||||
NSPoint pos = [NSEvent mouseLocation];
|
||||
pos.y = sf::VideoMode::getDesktopMode().height - pos.y;
|
||||
|
||||
return Vector2i(pos.x, pos.y);
|
||||
int scale = [[NSScreen mainScreen] backingScaleFactor];
|
||||
return Vector2i(pos.x, pos.y) * scale;
|
||||
}
|
||||
|
||||
|
||||
@ -149,7 +150,8 @@ Vector2i InputImpl::getMousePosition(const Window& relativeTo)
|
||||
// Use -cursorPositionFromEvent: with nil.
|
||||
NSPoint pos = [view cursorPositionFromEvent:nil];
|
||||
|
||||
return Vector2i(pos.x, pos.y);
|
||||
int scale = [view displayScaleFactor];
|
||||
return Vector2i(pos.x, pos.y) * scale;
|
||||
}
|
||||
|
||||
|
||||
@ -157,7 +159,8 @@ Vector2i InputImpl::getMousePosition(const Window& relativeTo)
|
||||
void InputImpl::setMousePosition(const Vector2i& position)
|
||||
{
|
||||
// Here we don't need to reverse the coordinates.
|
||||
CGPoint pos = CGPointMake(position.x, position.y);
|
||||
int scale = [[NSScreen mainScreen] backingScaleFactor];
|
||||
CGPoint pos = CGPointMake(position.x / scale, position.y / scale);
|
||||
|
||||
// Place the cursor.
|
||||
CGEventRef event = CGEventCreateMouseEvent(NULL,
|
||||
@ -180,9 +183,10 @@ void InputImpl::setMousePosition(const Vector2i& position, const Window& relativ
|
||||
return;
|
||||
|
||||
// Let SFOpenGLView compute the position in global coordinate
|
||||
NSPoint p = NSMakePoint(position.x, position.y);
|
||||
int scale = [view displayScaleFactor];
|
||||
NSPoint p = NSMakePoint(position.x / scale, position.y / scale);
|
||||
p = [view computeGlobalPositionOfRelativePoint:p];
|
||||
setMousePosition(sf::Vector2i(p.x, p.y));
|
||||
setMousePosition(sf::Vector2i(p.x, p.y) * scale);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user