Sfoglia il codice sorgente

Fixed warping back into the window when gaining focus with warp relative mode enabled

Sam Lantinga 2 anni fa
parent
commit
06aca7edaa
3 ha cambiato i file con 5 aggiunte e 2 eliminazioni
  1. 1 1
      src/events/SDL_mouse.c
  2. 3 0
      src/events/SDL_mouse_c.h
  3. 1 1
      src/video/SDL_video.c

+ 1 - 1
src/events/SDL_mouse.c

@@ -866,7 +866,7 @@ SDL_GetGlobalMouseState(int *x, int *y)
     }
 }
 
-static void
+void
 SDL_PerformWarpMouseInWindow(SDL_Window *window, int x, int y, SDL_bool ignore_relative_mode)
 {
     SDL_Mouse *mouse = SDL_GetMouse();

+ 3 - 0
src/events/SDL_mouse_c.h

@@ -152,6 +152,9 @@ extern int SDL_SendMouseButtonClicks(SDL_Window * window, SDL_MouseID mouseID, U
 /* Send a mouse wheel event */
 extern int SDL_SendMouseWheel(SDL_Window * window, SDL_MouseID mouseID, float x, float y, SDL_MouseWheelDirection direction);
 
+/* Warp the mouse within the window, potentially overriding relative mode */
+extern void SDL_PerformWarpMouseInWindow(SDL_Window *window, int x, int y, SDL_bool ignore_relative_mode);
+
 /* Shutdown the mouse subsystem */
 extern void SDL_MouseQuit(void);
 

+ 1 - 1
src/video/SDL_video.c

@@ -3038,7 +3038,7 @@ SDL_OnWindowFocusGained(SDL_Window * window)
     if (mouse && mouse->relative_mode) {
         SDL_SetMouseFocus(window);
         if (mouse->relative_mode_warp) {
-            SDL_WarpMouseInWindow(window, window->w/2, window->h/2);
+            SDL_PerformWarpMouseInWindow(window, window->w/2, window->h/2, SDL_TRUE);
         }
     }