mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-20 22:16:49 +01:00
Add SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 to SDL so that Reborn can keep running through Alt+F4.
This commit is contained in:
parent
270f38db08
commit
a702c338f0
@ -593,6 +593,15 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS"
|
#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
|
||||||
|
*
|
||||||
|
* The variable can be set to the following values:
|
||||||
|
* "0" - SDL will generate a window-close event when it sees Alt+F4.
|
||||||
|
* "1" - SDL will only do normal key handling for Alt+F4.
|
||||||
|
*/
|
||||||
|
#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief An enumeration of hint priorities
|
* \brief An enumeration of hint priorities
|
||||||
*/
|
*/
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "../../events/SDL_touch_c.h"
|
#include "../../events/SDL_touch_c.h"
|
||||||
#include "../../events/scancodes_windows.h"
|
#include "../../events/scancodes_windows.h"
|
||||||
#include "SDL_assert.h"
|
#include "SDL_assert.h"
|
||||||
|
#include "SDL_hints.h"
|
||||||
|
|
||||||
/* Dropfile support */
|
/* Dropfile support */
|
||||||
#include <shellapi.h>
|
#include <shellapi.h>
|
||||||
@ -322,6 +323,22 @@ WIN_ConvertUTF32toUTF8(UINT32 codepoint, char * text)
|
|||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SDL_bool
|
||||||
|
ShouldGenerateWindowCloseOnAltF4(void)
|
||||||
|
{
|
||||||
|
const char *hint;
|
||||||
|
|
||||||
|
hint = SDL_GetHint(SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4);
|
||||||
|
if (hint) {
|
||||||
|
if (*hint == '0') {
|
||||||
|
return SDL_TRUE;
|
||||||
|
} else {
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
LRESULT CALLBACK
|
LRESULT CALLBACK
|
||||||
WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
@ -559,7 +576,7 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||||||
/* Detect relevant keyboard shortcuts */
|
/* Detect relevant keyboard shortcuts */
|
||||||
if (keyboardState[SDL_SCANCODE_LALT] == SDL_PRESSED || keyboardState[SDL_SCANCODE_RALT] == SDL_PRESSED) {
|
if (keyboardState[SDL_SCANCODE_LALT] == SDL_PRESSED || keyboardState[SDL_SCANCODE_RALT] == SDL_PRESSED) {
|
||||||
/* ALT+F4: Close window */
|
/* ALT+F4: Close window */
|
||||||
if (code == SDL_SCANCODE_F4) {
|
if (code == SDL_SCANCODE_F4 && ShouldGenerateWindowCloseOnAltF4()) {
|
||||||
SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_CLOSE, 0, 0);
|
SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_CLOSE, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user