diff --git a/src/events/SDL_windowevents.c b/src/events/SDL_windowevents.c index ff92e82dd..fa34034a2 100644 --- a/src/events/SDL_windowevents.c +++ b/src/events/SDL_windowevents.c @@ -176,6 +176,14 @@ SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1, posted = (SDL_PushEvent(&event) > 0); } + + if (windowevent == SDL_WINDOWEVENT_CLOSE) { + if ( !window->prev && !window->next ) { + // This is the last window in the list so send the SDL_QUIT event + SDL_SendQuit(); + } + } + return (posted); } diff --git a/test/common.c b/test/common.c index 167694420..7b48a644f 100644 --- a/test/common.c +++ b/test/common.c @@ -1038,7 +1038,12 @@ CommonEvent(CommonState * state, SDL_Event * event, int *done) case SDL_WINDOWEVENT: switch (event->window.event) { case SDL_WINDOWEVENT_CLOSE: - *done = 1; + { + SDL_Window *pWindow = SDL_GetWindowFromID(event->window.windowID); + if ( pWindow ) { + SDL_DestroyWindow( pWindow ); + } + } break; } break;