diff --git a/test/testwm2.c b/test/testwm2.c index 1dc66350d..30b93bd23 100644 --- a/test/testwm2.c +++ b/test/testwm2.c @@ -38,6 +38,7 @@ static const char *cursorNames[] = { }; int system_cursor = -1; SDL_Cursor *cursor = NULL; +SDL_bool relative_mode = SDL_FALSE; /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ static void @@ -76,6 +77,17 @@ loop() SDL_GetDisplayName(SDL_GetWindowDisplayIndex(window))); } } + if (event.window.event == SDL_WINDOWEVENT_FOCUS_LOST) { + relative_mode = SDL_GetRelativeMouseMode(); + if (relative_mode) { + SDL_SetRelativeMouseMode(SDL_FALSE); + } + } + if (event.window.event == SDL_WINDOWEVENT_FOCUS_GAINED) { + if (relative_mode) { + SDL_SetRelativeMouseMode(SDL_TRUE); + } + } } if (event.type == SDL_KEYUP) { SDL_bool updateCursor = SDL_FALSE;