From cbe59113fe56b6966e1cb9329410acdb40cac142 Mon Sep 17 00:00:00 2001 From: Rob McBroom Date: Tue, 15 Apr 2014 15:53:40 -0400 Subject: [PATCH 1/2] include public.file-url data for pasteboard objects fixes #1805 --- Quicksilver/Code-QuickStepCore/QSObject_Pasteboard.m | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Quicksilver/Code-QuickStepCore/QSObject_Pasteboard.m b/Quicksilver/Code-QuickStepCore/QSObject_Pasteboard.m index cf83cf6ce..deb190fee 100644 --- a/Quicksilver/Code-QuickStepCore/QSObject_Pasteboard.m +++ b/Quicksilver/Code-QuickStepCore/QSObject_Pasteboard.m @@ -53,6 +53,8 @@ - (void)writeToPasteboard:(NSPasteboard *)pasteboard data:(id)pbData forType:(NS [pasteboard addTypes:[NSArray arrayWithObjects:NSURLPboardType, NSStringPboardType, nil] owner:nil]; [pasteboard setString:([pbData hasPrefix:@"mailto:"]) ?[pbData substringFromIndex:7] :pbData forType:NSStringPboardType]; [pasteboard setString:[pbData URLDecoding] forType:NSURLPboardType]; + } else if ([type isEqualToString:@"public.file-url"]) { + [pasteboard setString:pbData[0] forType:type]; } else if ([PLISTTYPES containsObject:type] || [pbData isKindOfClass:[NSDictionary class]] || [pbData isKindOfClass:[NSArray class]]) { if (![pbData isKindOfClass:[NSArray class]]) { pbData = @[pbData]; @@ -261,6 +263,15 @@ - (BOOL)putOnPasteboard:(NSPasteboard *)pboard declareTypes:(NSArray *)pbTypes i includeTypes = [NSArray arrayWithObject:NSColorPboardType]; } } + if ([self validPaths]) { + // this is a file - add file URL data + includeTypes = @[@"public.file-url"]; + [types addObjectsFromArray:includeTypes]; + NSArray *fileURLs = [[self validPaths] arrayByEnumeratingArrayUsingBlock:^NSString *(NSString *path) { + return [[NSURL fileURLWithPath:path] absoluteString]; + }]; + [self setObject:fileURLs forType:@"public.file-url"]; + } // last case: no other useful types: return a basic string if (!includeTypes) { includeTypes = @[NSStringPboardType, QSTextType]; From ebc530dcbbc9ffb536a8db8f79f4fa1b691f2133 Mon Sep 17 00:00:00 2001 From: Rob McBroom Date: Thu, 17 Apr 2014 08:04:12 -0400 Subject: [PATCH 2/2] make sure we have an array before assuming we can get the first element --- Quicksilver/Code-QuickStepCore/QSObject_Pasteboard.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Quicksilver/Code-QuickStepCore/QSObject_Pasteboard.m b/Quicksilver/Code-QuickStepCore/QSObject_Pasteboard.m index deb190fee..cd3943fc2 100644 --- a/Quicksilver/Code-QuickStepCore/QSObject_Pasteboard.m +++ b/Quicksilver/Code-QuickStepCore/QSObject_Pasteboard.m @@ -53,7 +53,7 @@ - (void)writeToPasteboard:(NSPasteboard *)pasteboard data:(id)pbData forType:(NS [pasteboard addTypes:[NSArray arrayWithObjects:NSURLPboardType, NSStringPboardType, nil] owner:nil]; [pasteboard setString:([pbData hasPrefix:@"mailto:"]) ?[pbData substringFromIndex:7] :pbData forType:NSStringPboardType]; [pasteboard setString:[pbData URLDecoding] forType:NSURLPboardType]; - } else if ([type isEqualToString:@"public.file-url"]) { + } else if ([type isEqualToString:@"public.file-url"] && [pbData isKindOfClass:[NSArray class]]) { [pasteboard setString:pbData[0] forType:type]; } else if ([PLISTTYPES containsObject:type] || [pbData isKindOfClass:[NSDictionary class]] || [pbData isKindOfClass:[NSArray class]]) { if (![pbData isKindOfClass:[NSArray class]]) {