SDL: unix: Add internal function SDL_CanUseGtk()

From a45a2368a703cd66174ab0edcb43d44de0b7e897 Mon Sep 17 00:00:00 2001
From: Simon McVittie <[EMAIL REDACTED]>
Date: Tue, 30 Dec 2025 14:50:09 +0000
Subject: [PATCH] unix: Add internal function SDL_CanUseGtk()

Necessary for a backport of #14712 to the 3.2.x branch. In the 3.4.x
branch this was factored out from tray-icon code, but 3.2.x doesn't have
that functionality.

Helps: https://github.com/libsdl-org/sdl2-compat/issues/564
Signed-off-by: Simon McVittie <smcv@debian.org>
---
 src/core/unix/SDL_gtk.c | 31 +++++++++++++++++++++++++++++++
 src/core/unix/SDL_gtk.h | 29 +++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+)
 create mode 100644 src/core/unix/SDL_gtk.c
 create mode 100644 src/core/unix/SDL_gtk.h

diff --git a/src/core/unix/SDL_gtk.c b/src/core/unix/SDL_gtk.c
new file mode 100644
index 0000000000000..f1ffce6acf2f9
--- /dev/null
+++ b/src/core/unix/SDL_gtk.c
@@ -0,0 +1,31 @@
+/*
+  Simple DirectMedia Layer
+  Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+*/
+#include "SDL_internal.h"
+#include "SDL_gtk.h"
+
+bool SDL_CanUseGtk(void)
+{
+    if (!SDL_GetHintBoolean("SDL_ENABLE_GTK", true)) {
+        return false;
+    }
+
+    return true;
+}
diff --git a/src/core/unix/SDL_gtk.h b/src/core/unix/SDL_gtk.h
new file mode 100644
index 0000000000000..0fc9aafd64a43
--- /dev/null
+++ b/src/core/unix/SDL_gtk.h
@@ -0,0 +1,29 @@
+/*
+  Simple DirectMedia Layer
+  Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include "SDL_internal.h"
+
+#ifndef SDL_gtk_h_
+#define SDL_gtk_h_
+
+extern bool SDL_CanUseGtk(void);
+
+#endif // SDL_gtk_h_