From 6689d312a3977213683cc6fb92fa58d414049fbb Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 25 Feb 2022 10:15:45 +0530 Subject: [PATCH] macOS: Paste multiple URLs separated by newlines Fixes #4734 --- glfw/cocoa_window.m | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/glfw/cocoa_window.m b/glfw/cocoa_window.m index 188ea4792..de17db3cc 100644 --- a/glfw/cocoa_window.m +++ b/glfw/cocoa_window.m @@ -1368,14 +1368,17 @@ is_ascii_control_char(char x) { options:options]; if (!objs) return NO; const NSUInteger count = [objs count]; + NSMutableString *uri_list = [NSMutableString stringWithCapacity:4096]; // auto-released if (count) { for (NSUInteger i = 0; i < count; i++) { id obj = objs[i]; if ([obj isKindOfClass:[NSURL class]]) { - const char *path = [obj fileSystemRepresentation]; - _glfwInputDrop(window, "text/plain;charset=utf-8", path, strlen(path)); + NSURL *url = (NSURL*)obj; + if ([uri_list length] > 0) [uri_list appendString:@("\n")]; + if (url.fileURL) [uri_list appendFormat:@("file://%s"), url.fileSystemRepresentation]; + else [uri_list appendString:url.absoluteString]; } else if ([obj isKindOfClass:[NSString class]]) { const char *text = [obj UTF8String]; _glfwInputDrop(window, "text/plain;charset=utf-8", text, strlen(text)); @@ -1385,6 +1388,7 @@ is_ascii_control_char(char x) { } } } + if ([uri_list length] > 0) _glfwInputDrop(window, "text/uri-list", uri_list.UTF8String, strlen(uri_list.UTF8String)); return YES; }