diff --git a/include/SDL3/SDL_test_common.h b/include/SDL3/SDL_test_common.h index 76ea5e45c0..a162a3de55 100644 --- a/include/SDL3/SDL_test_common.h +++ b/include/SDL3/SDL_test_common.h @@ -208,9 +208,16 @@ SDL_bool SDLTest_CommonInit(SDLTest_CommonState *state); SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState *state, const int argc, char **argv); /** - * Common event handler for test windows if you use a standard SDL_main. + * Print the details of an event. * - * This will free data from the event, like the string in a drop event! + * This is automatically called by SDLTest_CommonEvent() as needed. + * + * \param event The event to print. + */ +void SDLTest_PrintEvent(const SDL_Event *event); + +/** + * Common event handler for test windows if you use a standard SDL_main. * * \param state The common state used to create test window. * \param event The event to handle. diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index 05289d35ec..5f84b36495 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -615,6 +615,22 @@ int SDLTest_CommonArg(SDLTest_CommonState *state, int index) state->hide_cursor = SDL_TRUE; return 1; } + } else { + if (SDL_strcasecmp(argv[index], "--info") == 0) { + ++index; + if (!argv[index]) { + return -1; + } + if (SDL_strcasecmp(argv[index], "all") == 0) { + state->verbose |= VERBOSE_EVENT; + return 2; + } + if (SDL_strcasecmp(argv[index], "event") == 0) { + state->verbose |= VERBOSE_EVENT; + return 2; + } + return -1; + } } if (state->flags & SDL_INIT_AUDIO) { @@ -1555,7 +1571,7 @@ static const char *GamepadButtonName(const SDL_GamepadButton button) } } -static void SDLTest_PrintEvent(const SDL_Event *event) +void SDLTest_PrintEvent(const SDL_Event *event) { switch (event->type) { case SDL_EVENT_SYSTEM_THEME_CHANGED: diff --git a/test/testnative.c b/test/testnative.c index aee65b3eee..449bff3748 100644 --- a/test/testnative.c +++ b/test/testnative.c @@ -206,6 +206,14 @@ int main(int argc, char *argv[]) while (!done) { /* Check for events */ while (SDL_PollEvent(&event)) { + if (state->verbose & VERBOSE_EVENT) { + if (((event.type != SDL_EVENT_MOUSE_MOTION) && + (event.type != SDL_EVENT_FINGER_MOTION)) || + (state->verbose & VERBOSE_MOTION)) { + SDLTest_PrintEvent(&event); + } + } + switch (event.type) { case SDL_EVENT_WINDOW_EXPOSED: SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);