From 24501dbc93ba866e48416ce9e1d7f918fbf66a8d Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sun, 17 Jan 2016 11:58:44 +0200 Subject: [PATCH] Fixed copy to pasteboard on legacy OS X Copy/paste is now implemented using the method available on all supported versions This fixes 'unrecognized selector' exception on OS X 10.4 and 10.5 --- src/posix/cocoa/i_system.mm | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/src/posix/cocoa/i_system.mm b/src/posix/cocoa/i_system.mm index f12ef18eb..498498d94 100644 --- a/src/posix/cocoa/i_system.mm +++ b/src/posix/cocoa/i_system.mm @@ -338,23 +338,17 @@ int I_FindAttr(findstate_t* const fileinfo) } -static NSString* GetPasteboardStringType() -{ -#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060 - return NSStringPboardType; -#else // 10.6 or higher - return NSAppKitVersionNumber < AppKit10_6 - ? NSStringPboardType - : NSPasteboardTypeString; -#endif // before 10.6 -} - void I_PutInClipboard(const char* const string) { NSPasteboard* const pasteBoard = [NSPasteboard generalPasteboard]; - [pasteBoard clearContents]; - [pasteBoard setString:[NSString stringWithUTF8String:string] - forType:GetPasteboardStringType()]; + NSString* const stringType = NSStringPboardType; + NSArray* const types = [NSArray arrayWithObjects:stringType, nil]; + NSString* const content = [NSString stringWithUTF8String:string]; + + [pasteBoard declareTypes:types + owner:nil]; + [pasteBoard setString:content + forType:stringType]; } FString I_GetFromClipboard(bool returnNothing) @@ -365,7 +359,7 @@ FString I_GetFromClipboard(bool returnNothing) } NSPasteboard* const pasteBoard = [NSPasteboard generalPasteboard]; - NSString* const value = [pasteBoard stringForType:GetPasteboardStringType()]; + NSString* const value = [pasteBoard stringForType:NSStringPboardType]; return FString([value UTF8String]); }