Browse Source

fix: cursor lock/unlock inconsistent behaviour on glfw, rgfw, sl (#5323)

pull/5325/head
Tiago Ferreira 2 days ago
committed by GitHub
parent
commit
cc83b2bd8e
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
3 changed files with 11 additions and 9 deletions
  1. +2
    -0
      src/platforms/rcore_desktop_glfw.c
  2. +5
    -2
      src/platforms/rcore_desktop_rgfw.c
  3. +4
    -7
      src/platforms/rcore_desktop_sdl.c

+ 2
- 0
src/platforms/rcore_desktop_glfw.c View File

@ -1070,6 +1070,7 @@ void EnableCursor(void)
if (glfwRawMouseMotionSupported()) glfwSetInputMode(platform.handle, GLFW_RAW_MOUSE_MOTION, GLFW_FALSE); if (glfwRawMouseMotionSupported()) glfwSetInputMode(platform.handle, GLFW_RAW_MOUSE_MOTION, GLFW_FALSE);
CORE.Input.Mouse.cursorHidden = false;
CORE.Input.Mouse.cursorLocked = false; CORE.Input.Mouse.cursorLocked = false;
} }
@ -1083,6 +1084,7 @@ void DisableCursor(void)
if (glfwRawMouseMotionSupported()) glfwSetInputMode(platform.handle, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE); if (glfwRawMouseMotionSupported()) glfwSetInputMode(platform.handle, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE);
CORE.Input.Mouse.cursorHidden = true;
CORE.Input.Mouse.cursorLocked = true; CORE.Input.Mouse.cursorLocked = true;
} }

+ 5
- 2
src/platforms/rcore_desktop_rgfw.c View File

@ -838,8 +838,9 @@ void EnableCursor(void)
// Set cursor position in the middle // Set cursor position in the middle
SetMousePosition(CORE.Window.screen.width/2, CORE.Window.screen.height/2); SetMousePosition(CORE.Window.screen.width/2, CORE.Window.screen.height/2);
RGFW_window_showMouse(platform.window, true);
CORE.Input.Mouse.cursorHidden = false;
ShowCursor();
CORE.Input.Mouse.cursorLocked = true;
} }
// Disables cursor (lock cursor) // Disables cursor (lock cursor)
@ -848,6 +849,8 @@ void DisableCursor(void)
RGFW_disableCursor = true; RGFW_disableCursor = true;
RGFW_window_mouseHold(platform.window, RGFW_AREA(0, 0)); RGFW_window_mouseHold(platform.window, RGFW_AREA(0, 0));
HideCursor(); HideCursor();
CORE.Input.Mouse.cursorLocked = true;
} }
// Swap back buffer with front buffer (screen drawing) // Swap back buffer with front buffer (screen drawing)

+ 4
- 7
src/platforms/rcore_desktop_sdl.c View File

@ -1237,13 +1237,7 @@ void EnableCursor(void)
{ {
SDL_SetRelativeMouseMode(SDL_FALSE); SDL_SetRelativeMouseMode(SDL_FALSE);
#if defined(USING_VERSION_SDL3)
// NOTE: SDL_ShowCursor() has been split into three functions:
// SDL_ShowCursor(), SDL_HideCursor(), and SDL_CursorVisible()
SDL_ShowCursor();
#else
SDL_ShowCursor(SDL_ENABLE);
#endif
ShowCursor();
CORE.Input.Mouse.cursorLocked = false; CORE.Input.Mouse.cursorLocked = false;
} }
@ -1253,6 +1247,9 @@ void DisableCursor(void)
{ {
SDL_SetRelativeMouseMode(SDL_TRUE); SDL_SetRelativeMouseMode(SDL_TRUE);
HideCursor();
platform.cursorRelative = true;
CORE.Input.Mouse.cursorLocked = true; CORE.Input.Mouse.cursorLocked = true;
} }

Loading…
Cancel
Save