Browse Source

Cocoa: Fix unresponsive cursor after ungrab

There is a suppression interval (0.25 seconds by default) after a call
to CGWarpMouseCursorPosition, during which local hardware events
(keyboard and mouse) are ignored. GLFW already calls
CGEventSourceSetLocalEventsSuppressionInterval with a value of 0.0, but
it doesn't help in this case, there is still a short delay before the
cursor can be moved. Moving the CGAssociateMouseAndMouseCursorPosition
call after the cursor position has been restored, fixes the issue.

Closes #1962

(cherry picked from commit 157ebb80aafe263b86fd450f21a193f0412fb717)
Ioannis Tsakpinis 4 năm trước cách đây
mục cha
commit
c32fefc6a0
1 tập tin đã thay đổi với 1 bổ sung1 xóa
  1. 1 1
      src/cocoa_window.m

+ 1 - 1
src/cocoa_window.m

@@ -114,10 +114,10 @@ static void updateCursorMode(_GLFWwindow* window)
     else if (_glfw.ns.disabledCursorWindow == window)
     else if (_glfw.ns.disabledCursorWindow == window)
     {
     {
         _glfw.ns.disabledCursorWindow = NULL;
         _glfw.ns.disabledCursorWindow = NULL;
-        CGAssociateMouseAndMouseCursorPosition(true);
         _glfwPlatformSetCursorPos(window,
         _glfwPlatformSetCursorPos(window,
                                   _glfw.ns.restoreCursorPosX,
                                   _glfw.ns.restoreCursorPosX,
                                   _glfw.ns.restoreCursorPosY);
                                   _glfw.ns.restoreCursorPosY);
+        CGAssociateMouseAndMouseCursorPosition(true);
     }
     }
 
 
     if (cursorInContentArea(window))
     if (cursorInContentArea(window))