Allow the progress API to be used on all platforms

It's visually only hooked up on Windows for now, but the API will be internally consistent on all platforms.
This commit is contained in:
Sam Lantinga
2025-03-25 08:32:26 -07:00
parent b45ed98ae9
commit f355c7f217
7 changed files with 60 additions and 90 deletions

View File

@@ -2457,20 +2457,42 @@ SDL_AppResult SDLTest_CommonEventMainCallbacks(SDLTest_CommonState *state, const
break;
case SDLK_P:
if (withAlt) {
/* Ctrl-P Cycle through progress states */
/* Alt-P cycle through progress states */
SDL_Window *window = SDL_GetWindowFromEvent(event);
if (window) {
float progress_state = SDL_GetWindowProgressState(window);
const char *name;
SDL_ProgressState progress_state = SDL_GetWindowProgressState(window);
progress_state += 1;
if (progress_state > SDL_PROGRESS_STATE_ERROR) {
progress_state = SDL_PROGRESS_STATE_NONE;
}
switch (progress_state) {
case SDL_PROGRESS_STATE_NONE:
name = "NONE";
break;
case SDL_PROGRESS_STATE_INDETERMINATE:
name = "INDETERMINATE";
break;
case SDL_PROGRESS_STATE_NORMAL:
name = "NORMAL";
break;
case SDL_PROGRESS_STATE_PAUSED:
name = "PAUSED";
break;
case SDL_PROGRESS_STATE_ERROR:
name = "ERROR";
break;
default:
name = "UNKNOWN";
break;
}
SDL_Log("Setting progress state to %s", name);
SDL_SetWindowProgressState(window, progress_state);
}
}
else if (withControl)
{
/* Alt-P Increase progress value */
/* Ctrl-P increase progress value */
SDL_Window *window = SDL_GetWindowFromEvent(event);
if (window) {
float progress_value = SDL_GetWindowProgressValue(window);
@@ -2479,6 +2501,7 @@ SDL_AppResult SDLTest_CommonEventMainCallbacks(SDLTest_CommonState *state, const
} else {
progress_value += 0.1f;
}
SDL_Log("Setting progress value to %.1f", progress_value);
SDL_SetWindowProgressValue(window, progress_value);
}
}