diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2018-10-05 12:20:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-05 12:20:57 +0200 |
commit | da6646dd5e5c779d72d5819bffce4a4e96e94344 (patch) | |
tree | ccfaaecb73f45a2e76fec2f2a14c77018ea11bbc /platform/osx | |
parent | 6638f62c4064eef7fcb55395f43bdf5f17784f7f (diff) | |
parent | 77fddfc7ea28b8e2946317735fef4ba92757b16c (diff) |
Merge pull request #22685 from remmah/patch-1
Modernized copy/paste APIs on macOS #7185
Diffstat (limited to 'platform/osx')
-rw-r--r-- | platform/osx/os_osx.mm | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 1c693c9ea8..6ab433203f 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -1859,28 +1859,30 @@ bool OS_OSX::can_draw() const { void OS_OSX::set_clipboard(const String &p_text) { - NSArray *types = [NSArray arrayWithObjects:NSStringPboardType, nil]; + NSString *copiedString = [NSString stringWithUTF8String:p_text.utf8().get_data()]; + NSArray *copiedStringArray = [NSArray arrayWithObject:copiedString]; NSPasteboard *pasteboard = [NSPasteboard generalPasteboard]; - [pasteboard declareTypes:types owner:nil]; - [pasteboard setString:[NSString stringWithUTF8String:p_text.utf8().get_data()] - forType:NSStringPboardType]; + [pasteboard clearContents]; + [pasteboard writeObjects:copiedStringArray]; } String OS_OSX::get_clipboard() const { NSPasteboard *pasteboard = [NSPasteboard generalPasteboard]; + NSArray *classArray = [NSArray arrayWithObject:[NSString class]]; + NSDictionary *options = [NSDictionary dictionary]; - if (![[pasteboard types] containsObject:NSStringPboardType]) { - return ""; - } + BOOL ok = [pasteboard canReadObjectForClasses:classArray options:options]; - NSString *object = [pasteboard stringForType:NSStringPboardType]; - if (!object) { + if (!ok) { return ""; } - char *utfs = strdup([object UTF8String]); + NSArray *objectsToPaste = [pasteboard readObjectsForClasses:classArray options:options]; + NSString *string = [objectsToPaste objectAtIndex:0]; + + char *utfs = strdup([string UTF8String]); String ret; ret.parse_utf8(utfs); free(utfs); |