From 7162fa4f5656ad7dfe2d6fea02f9f33c5aa1b1cf Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 17 Aug 2019 20:50:20 +0200 Subject: Add clipboard support --- pugl/detail/mac.m | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'pugl/detail/mac.m') diff --git a/pugl/detail/mac.m b/pugl/detail/mac.m index 8570709..ab13452 100644 --- a/pugl/detail/mac.m +++ b/pugl/detail/mac.m @@ -1024,3 +1024,43 @@ puglSetAspectRatio(PuglView* const view, return PUGL_SUCCESS; } + +const void* +puglGetClipboard(PuglView* const view, + const char** const type, + size_t* const len) +{ + NSPasteboard* const pasteboard = [NSPasteboard generalPasteboard]; + + if ([[pasteboard types] containsObject:NSStringPboardType]) { + const NSString* str = [pasteboard stringForType:NSStringPboardType]; + const char* utf8 = [str UTF8String]; + + puglSetBlob(&view->clipboard, utf8, strlen(utf8) + 1); + } + + return puglGetInternalClipboard(view, type, len); +} + +PuglStatus +puglSetClipboard(PuglView* const view, + const char* const type, + const void* const data, + const size_t len) +{ + NSPasteboard* const pasteboard = [NSPasteboard generalPasteboard]; + const char* const str = (const char*)data; + + PuglStatus st = puglSetInternalClipboard(view, type, data, len); + if (st) { + return st; + } + + [pasteboard declareTypes:[NSArray arrayWithObjects:NSStringPboardType, nil] + owner:nil]; + + [pasteboard setString:[NSString stringWithUTF8String:str] + forType:NSStringPboardType]; + + return PUGL_SUCCESS; +} -- cgit v1.2.1