SDL: MacOS: fix cocoa clipboard text (24fa2)

From 24fa2722c384fced956e97b8aecfb95e6d5ec122 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20GINIER?= <[EMAIL REDACTED]>
Date: Wed, 14 May 2025 06:58:28 +0200
Subject: [PATCH] MacOS: fix cocoa clipboard text

Adjust Cocoa_SetClipboardData so that SetClipboardText text can be pasted outside SDL

(cherry picked from commit 945eb6dc871177f454618987e1127e449fc1191d)
---
 src/video/cocoa/SDL_cocoaclipboard.m | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/video/cocoa/SDL_cocoaclipboard.m b/src/video/cocoa/SDL_cocoaclipboard.m
index 42c2ad64baa20..7039ff6ad581e 100644
--- a/src/video/cocoa/SDL_cocoaclipboard.m
+++ b/src/video/cocoa/SDL_cocoaclipboard.m
@@ -158,6 +158,17 @@ bool Cocoa_SetClipboardData(SDL_VideoDevice *_this)
     @autoreleasepool {
         SDL_CocoaVideoData *data = (__bridge SDL_CocoaVideoData *)_this->internal;
         NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
+
+        // SetClipboardText specialization so text is available after the app quits
+        if (_this->clipboard_callback && _this->num_clipboard_mime_types == 1) {
+            if (SDL_strncmp(_this->clipboard_mime_types[0], "text/plain;charset=utf-8", 24) == 0) {
+                [pasteboard declareTypes:@[ NSPasteboardTypeString ] owner:nil];
+                [pasteboard setString:@((char *)_this->clipboard_userdata) forType:NSPasteboardTypeString];
+                data.clipboard_count = [pasteboard changeCount];
+                return true;
+            }
+        }
+
         NSPasteboardItem *newItem = [NSPasteboardItem new];
         NSMutableArray *utiTypes = [NSMutableArray new];
         Cocoa_PasteboardDataProvider *provider = [[Cocoa_PasteboardDataProvider alloc] initWith: _this->clipboard_callback userData: _this->clipboard_userdata];