diff --git a/WhatsNew.txt b/WhatsNew.txt index 22b1a0f8b..0d10ee672 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -1,6 +1,16 @@ This is a list of major changes in SDL's version history. +--------------------------------------------------------------------------- +3.2.10: +--------------------------------------------------------------------------- +* Added SDL_HINT_VIDEO_X11_EXTERNAL_WINDOW_INPUT to control whether XSelectInput() should be called on external windows to enable input events. + +--------------------------------------------------------------------------- +3.2.4: +--------------------------------------------------------------------------- +* Added SDL_StretchSurface() + --------------------------------------------------------------------------- 3.2.0: --------------------------------------------------------------------------- diff --git a/include/SDL3/SDL_hints.h b/include/SDL3/SDL_hints.h index 3206dc13d..97d1563a3 100644 --- a/include/SDL3/SDL_hints.h +++ b/include/SDL3/SDL_hints.h @@ -3607,6 +3607,20 @@ extern "C" { */ #define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" +/** + * A variable controlling whether SDL should call XSelectInput() to enable input events on X11 windows wrapped by SDL windows. + * + * The variable can be set to the following values: + * + * - "0": Don't call XSelectInput(), assuming the native window code has done it already. + * - "1": Call XSelectInput() to enable input events. (default) + * + * This hint should be set before creating a window. + * + * \since This hint is available since SDL 3.2.10. + */ +#define SDL_HINT_VIDEO_X11_EXTERNAL_WINDOW_INPUT "SDL_VIDEO_X11_EXTERNAL_WINDOW_INPUT" + /** * A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint * should be used. diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c index 55620533e..7b3b379b9 100644 --- a/src/video/x11/SDL_x11window.c +++ b/src/video/x11/SDL_x11window.c @@ -521,7 +521,9 @@ bool X11_CreateWindow(SDL_VideoDevice *_this, SDL_Window *window, SDL_Properties return false; } - SetupWindowInput(_this, window); + if (SDL_GetHintBoolean(SDL_HINT_VIDEO_X11_EXTERNAL_WINDOW_INPUT, true)) { + SetupWindowInput(_this, window); + } return true; }