Make mouse relative mode save the original co-ordinates to restore them
properly.
This commit is contained in:
parent
b7f2ad8ad0
commit
0925c1dd78
2 changed files with 8 additions and 2 deletions
|
@ -323,9 +323,13 @@ SDL_SetRelativeMouseMode(SDL_bool enabled)
|
||||||
/* Set the relative mode */
|
/* Set the relative mode */
|
||||||
mouse->relative_mode = enabled;
|
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 */
|
/* 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 */
|
/* Flush pending mouse motion */
|
||||||
|
|
|
@ -60,6 +60,8 @@ typedef struct
|
||||||
int last_x, last_y; /* the last reported x and y coordinates */
|
int last_x, last_y; /* the last reported x and y coordinates */
|
||||||
Uint8 buttonstate;
|
Uint8 buttonstate;
|
||||||
SDL_bool relative_mode;
|
SDL_bool relative_mode;
|
||||||
|
/* the x and y coordinates when relative mode was activated */
|
||||||
|
int original_x, original_y;
|
||||||
|
|
||||||
SDL_Cursor *cursors;
|
SDL_Cursor *cursors;
|
||||||
SDL_Cursor *def_cursor;
|
SDL_Cursor *def_cursor;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue