Added a window flash operation to be explicit about window flash behavior

This commit is contained in:
Sam Lantinga 2021-07-24 13:41:55 -07:00
parent b2c8d3e9e4
commit f1633127d1
16 changed files with 79 additions and 32 deletions

View file

@ -37,7 +37,7 @@ static const char *video_usage[] = {
"[--scale N]", "[--depth N]", "[--refresh R]", "[--vsync]", "[--noframe]",
"[--resizable]", "[--minimize]", "[--maximize]", "[--grab]", "[--keyboard-grab]",
"[--shown]", "[--hidden]", "[--input-focus]", "[--mouse-focus]",
"[--allow-highdpi]", "[--usable-bounds]"
"[--flash-on-focus-loss]", "[--allow-highdpi]", "[--usable-bounds]"
};
static const char *audio_usage[] = {
@ -441,6 +441,10 @@ SDLTest_CommonArg(SDLTest_CommonState * state, int index)
state->window_flags |= SDL_WINDOW_MOUSE_FOCUS;
return 1;
}
if (SDL_strcasecmp(argv[index], "--flash-on-focus-loss") == 0) {
state->flash_on_focus_loss = SDL_TRUE;
return 1;
}
if (SDL_strcasecmp(argv[index], "--grab") == 0) {
state->window_flags |= SDL_WINDOW_MOUSE_GRABBED;
return 1;
@ -1808,6 +1812,16 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done)
}
}
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
if (state->flash_on_focus_loss) {
SDL_Window *window = SDL_GetWindowFromID(event->window.windowID);
if (window) {
SDL_FlashWindow(window, SDL_FLASH_UNTIL_FOCUSED);
}
}
break;
default:
break;
}
break;
case SDL_KEYDOWN: {
@ -1963,7 +1977,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done)
/* Ctrl-F flash the window */
SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
if (window) {
SDL_FlashWindow(window);
SDL_FlashWindow(window, SDL_FLASH_BRIEFLY);
}
}
break;