From f81158ae559bb069ac0d176ba923d8f6df2ba95c Mon Sep 17 00:00:00 2001 From: Sergey Fedorov Date: Wed, 30 Apr 2025 02:16:37 +0800 Subject: [PATCH] macos.mm: compat code --- src/cb/src/platforms/macos.mm | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git src/cb/src/platforms/macos.mm src/cb/src/platforms/macos.mm index b6aca12..dfa322c 100644 --- src/cb/src/platforms/macos.mm +++ src/cb/src/platforms/macos.mm @@ -13,6 +13,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see .*/ + #import #import #import @@ -22,21 +23,24 @@ const bool GUIClipboardSupportsCut = false; -static std::vector fileContent() { - NSArray *classes = @[ [NSURL class] ]; +static std::vector fileContents() { + NSArray *classes = [NSArray arrayWithObjects:[NSURL class], nil]; if ([[NSPasteboard generalPasteboard] canReadObjectForClasses:classes options:nil]) { NSArray *files = [[NSPasteboard generalPasteboard] readObjectsForClasses:classes options:nil]; std::vector stringArray; - for (NSURL *fileURL in files) { + + for (NSUInteger i = 0; i < [files count]; i++) { + NSURL *fileURL = [files objectAtIndex:i]; stringArray.push_back([[fileURL path] UTF8String]); } + return stringArray; } return {}; } static std::string textContent() { - NSArray *classes = @[ [NSString class], [NSAttributedString class] ]; + NSArray *classes = [NSArray arrayWithObjects:[NSString class], [NSAttributedString class], nil]; if ([[NSPasteboard generalPasteboard] canReadObjectForClasses:classes options:nil]) { NSString *text = [[NSPasteboard generalPasteboard] stringForType:NSPasteboardTypeString]; return [text UTF8String]; @@ -46,7 +50,7 @@ static std::string textContent() { ClipboardContent getGUIClipboard(const std::string& requested_mime) { (void)requested_mime; - auto files = fileContent(); + auto files = fileContents(); if (files.size() > 0) { std::vector fileVector; for (auto &file : files) { @@ -63,11 +67,13 @@ ClipboardContent getGUIClipboard(const std::string& requested_mime) { void writeToGUIClipboard(const ClipboardContent& clipboard) { [[NSPasteboard generalPasteboard] clearContents]; if (clipboard.type() == ClipboardContentType::Text || clipboard.type() == ClipboardContentType::Binary) { - [[NSPasteboard generalPasteboard] setString:@(clipboard.text().c_str()) forType:NSPasteboardTypeString]; + NSString *clipboardText = [NSString stringWithUTF8String:clipboard.text().c_str()]; + [[NSPasteboard generalPasteboard] setString:clipboardText forType:NSPasteboardTypeString]; } else if (clipboard.type() == ClipboardContentType::Paths) { NSMutableArray *fileArray = [NSMutableArray new]; for (auto const& path : clipboard.paths().paths()) { - [fileArray addObject:[NSURL fileURLWithPath:@(path.c_str())]]; + NSString *filePath = [NSString stringWithUTF8String:path.c_str()]; + [fileArray addObject:[NSURL fileURLWithPath:filePath]]; } [[NSPasteboard generalPasteboard] writeObjects:fileArray]; } else {