Explorar o código

Modernized copy/paste APIs on macOS #7185

remmah %!s(int64=7) %!d(string=hai) anos
pai
achega
77fddfc7ea
Modificáronse 1 ficheiros con 12 adicións e 10 borrados
  1. 12 10
      platform/osx/os_osx.mm

+ 12 - 10
platform/osx/os_osx.mm

@@ -1864,28 +1864,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);