Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Add SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 to SDL so that Reborn can kee…
…p running through Alt+F4.
- Loading branch information
Showing
with
27 additions
and
1 deletion.
-
+9
−0
include/SDL_hints.h
-
+18
−1
src/video/windows/SDL_windowsevents.c
|
@@ -593,6 +593,15 @@ extern "C" { |
|
|
*/ |
|
|
#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 |
|
|
*/ |
|
|
|
@@ -32,6 +32,7 @@ |
|
|
#include "../../events/SDL_touch_c.h" |
|
|
#include "../../events/scancodes_windows.h" |
|
|
#include "SDL_assert.h" |
|
|
#include "SDL_hints.h" |
|
|
|
|
|
/* Dropfile support */ |
|
|
#include <shellapi.h> |
|
@@ -322,6 +323,22 @@ WIN_ConvertUTF32toUTF8(UINT32 codepoint, char * text) |
|
|
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 |
|
|
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 */ |
|
|
if (keyboardState[SDL_SCANCODE_LALT] == SDL_PRESSED || keyboardState[SDL_SCANCODE_RALT] == SDL_PRESSED) { |
|
|
/* ALT+F4: Close window */ |
|
|
if (code == SDL_SCANCODE_F4) { |
|
|
if (code == SDL_SCANCODE_F4 && ShouldGenerateWindowCloseOnAltF4()) { |
|
|
SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_CLOSE, 0, 0); |
|
|
} |
|
|
} |
|
|