summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormikica1986vee <mikica1986vee@gmail.com>2014-09-25 20:48:38 +0200
committermikica1986vee <mikica1986vee@gmail.com>2014-09-25 20:48:38 +0200
commit72558b617332a7e9499f4d40ba782f99a1789ead (patch)
tree3d40d2527bdb9bf17a1eb2e5dc40637af55255e2
parent46135affac29a09200fc01a34dd8408a3d83d493 (diff)
warp_mouse_pos for osx
Just copied windows behavior.
-rw-r--r--platform/osx/os_osx.mm15
1 files changed, 14 insertions, 1 deletions
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index c09dadc066..643c287c95 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -1070,7 +1070,20 @@ bool OS_OSX::is_mouse_grab_enabled() const {
void OS_OSX::warp_mouse_pos(const Point2& p_to) {
-//not done, must be done
+ //copied from windows impl with osx native calls
+ if (mouse_mode == MOUSE_MODE_CAPTURED){
+ mouse_x = p_to.x;
+ mouse_y = p_to.y;
+ }
+ else{ //set OS position
+ CGPoint lMouseWarpPos = {p_to.x, p_to.y};
+
+ CGEventSourceRef lEventRef = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
+ CGEventSourceSetLocalEventsSuppressionInterval(lEventRef, 0.0);
+ CGAssociateMouseAndMouseCursorPosition(false);
+ CGWarpMouseCursorPosition(lMouseWarpPos);
+ CGAssociateMouseAndMouseCursorPosition(true);
+ }
}
Point2 OS_OSX::get_mouse_pos() const {