mirror of
https://github.com/libsdl-org/SDL.git
synced 2024-12-01 07:43:29 +08:00
parent
34fd83ca06
commit
f782abe5f0
@ -1943,6 +1943,30 @@ extern "C" {
|
||||
*/
|
||||
#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE"
|
||||
|
||||
/**
|
||||
* \brief A variable that decides whether to send SDL_QUIT when closing the final window.
|
||||
*
|
||||
* By default, SDL sends an SDL_QUIT event when there is only one window
|
||||
* and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most
|
||||
* apps would also take the loss of this window as a signal to terminate the
|
||||
* program.
|
||||
*
|
||||
* However, it's not unreasonable in some cases to have the program continue
|
||||
* to live on, perhaps to create new windows later.
|
||||
*
|
||||
* Changing this hint to "0" will cause SDL to not send an SDL_QUIT event
|
||||
* when the final window is requesting to close. Note that in this case,
|
||||
* there are still other legitimate reasons one might get an SDL_QUIT
|
||||
* event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c)
|
||||
* on Unix, etc.
|
||||
*
|
||||
* The default value is "1". This hint can be changed at any time.
|
||||
*
|
||||
* This hint is available since SDL 2.0.22. Before then, you always get
|
||||
* an SDL_QUIT event when closing the final window.
|
||||
*/
|
||||
#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE"
|
||||
|
||||
|
||||
/**
|
||||
* \brief An enumeration of hint priorities
|
||||
|
@ -25,7 +25,7 @@
|
||||
#include "SDL_events.h"
|
||||
#include "SDL_events_c.h"
|
||||
#include "SDL_mouse_c.h"
|
||||
|
||||
#include "SDL_hints.h"
|
||||
|
||||
static int SDLCALL
|
||||
RemovePendingSizeChangedAndResizedEvents(void * userdata, SDL_Event *event)
|
||||
@ -201,8 +201,9 @@ SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1,
|
||||
|
||||
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();
|
||||
if (SDL_GetHintBoolean(SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE, SDL_TRUE)) {
|
||||
SDL_SendQuit(); /* This is the last window in the list so send the SDL_QUIT event */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user