Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Make mouse relative mode save the original co-ordinates to restore them

properly.
  • Loading branch information
Nemo157 committed Feb 3, 2012
1 parent 44341d3 commit f5a0ff784e033874405a49ce157e0d10f12f1fcf
Showing with 8 additions and 2 deletions.
  1. +6 −2 src/events/SDL_mouse.c
  2. +2 −0 src/events/SDL_mouse_c.h
@@ -323,9 +323,13 @@ SDL_SetRelativeMouseMode(SDL_bool enabled)
/* Set the relative mode */
mouse->relative_mode = enabled;

if (!enabled && mouse->focus) {
if (enabled) {
/* Save the expected mouse position */
mouse->original_x = mouse->x;
mouse->original_y = mouse->y;
} else if (mouse->focus) {
/* Restore the expected mouse position */
SDL_WarpMouseInWindow(mouse->focus, mouse->x, mouse->y);
SDL_WarpMouseInWindow(mouse->focus, mouse->original_x, mouse->original_y);
}

/* Flush pending mouse motion */
@@ -60,6 +60,8 @@ typedef struct
int last_x, last_y; /* the last reported x and y coordinates */
Uint8 buttonstate;
SDL_bool relative_mode;
/* the x and y coordinates when relative mode was activated */
int original_x, original_y;

SDL_Cursor *cursors;
SDL_Cursor *def_cursor;

0 comments on commit f5a0ff7

Please sign in to comment.