\r
#if defined(_IRR_COMPILE_WITH_SDL_DEVICE_)\r
#include <SDL_clipboard.h>\r
+#include <SDL_version.h>\r
#elif defined(_IRR_COMPILE_WITH_X11_DEVICE_)\r
#include "CIrrDeviceLinux.h"\r
#endif\r
\r
#include "fast_atof.h"\r
\r
+#if defined(_IRR_COMPILE_WITH_SDL_DEVICE_)\r
+static bool sdl_supports_primary_selection = [] {\r
+#if SDL_VERSION_ATLEAST(2, 25, 0)\r
+ SDL_version linked_version;\r
+ SDL_GetVersion(&linked_version);\r
+ return (linked_version.major == 2 && linked_version.minor >= 25)\r
+ || linked_version.major > 2;\r
+#else\r
+ return false;\r
+#endif\r
+}();\r
+#endif\r
+\r
namespace irr\r
{\r
\r
if (strlen(text)==0)\r
return;\r
\r
-#if defined(_IRR_COMPILE_WITH_X11_DEVICE_)\r
+#if defined(_IRR_COMPILE_WITH_SDL_DEVICE_)\r
+#if SDL_VERSION_ATLEAST(2, 25, 0)\r
+ if (sdl_supports_primary_selection)\r
+ SDL_SetPrimarySelectionText(text);\r
+#endif\r
+\r
+#elif defined(_IRR_COMPILE_WITH_X11_DEVICE_)\r
if ( IrrDeviceLinux )\r
IrrDeviceLinux->copyToPrimarySelection(text);\r
#endif\r
//! gets text from the primary selection\r
const c8* COSOperator::getTextFromPrimarySelection() const\r
{\r
-#if defined(_IRR_COMPILE_WITH_X11_DEVICE_)\r
+#if defined(_IRR_COMPILE_WITH_SDL_DEVICE_)\r
+#if SDL_VERSION_ATLEAST(2, 25, 0)\r
+ if (sdl_supports_primary_selection) {\r
+ static char *text = nullptr;\r
+ if (text)\r
+ SDL_free(text);\r
+ text = SDL_GetPrimarySelectionText();\r
+ return text;\r
+ }\r
+#endif\r
+ return 0;\r
+\r
+#elif defined(_IRR_COMPILE_WITH_X11_DEVICE_)\r
if ( IrrDeviceLinux )\r
return IrrDeviceLinux->getTextFromPrimarySelection();\r
return 0;\r