Revision: 12091
          http://sourceforge.net/p/skim-app/code/12091
Author:   hofman
Date:     2020-12-27 15:55:36 +0000 (Sun, 27 Dec 2020)
Log Message:
-----------
Use URL components to build skim urLs

Modified Paths:
--------------
    trunk/NSDocument_SKExtensions.m
    trunk/PDFPage_SKExtensions.m
    trunk/SKBookmark.m
    trunk/SKMainDocument.m

Modified: trunk/NSDocument_SKExtensions.m
===================================================================
--- trunk/NSDocument_SKExtensions.m     2020-12-25 15:49:15 UTC (rev 12090)
+++ trunk/NSDocument_SKExtensions.m     2020-12-27 15:55:36 UTC (rev 12091)
@@ -82,7 +82,10 @@
 - (IBAction)copyURL:(id)sender {
     NSURL *fileURL = [self fileURL];
     if (fileURL) {
-        NSURL *skimURL = [NSURL URLWithString:[@"skim" 
stringByAppendingString:[[[fileURL filePathURL] absoluteString] 
substringFromIndex:4]]];
+        NSURLComponents *components = [[NSURLComponents alloc] 
initWithURL:fileURL resolvingAgainstBaseURL:NO];
+        [components setScheme:@"skim"];
+        NSURL *skimURL = [components URL];
+        [components release];
         NSPasteboard *pboard = [NSPasteboard generalPasteboard];
         [pboard clearContents];
         [pboard writeObjects:[NSArray arrayWithObjects:skimURL, nil]];

Modified: trunk/PDFPage_SKExtensions.m
===================================================================
--- trunk/PDFPage_SKExtensions.m        2020-12-25 15:49:15 UTC (rev 12090)
+++ trunk/PDFPage_SKExtensions.m        2020-12-27 15:55:36 UTC (rev 12091)
@@ -388,8 +388,12 @@
     NSURL *fileURL = [[self containingDocument] fileURL];
     if (fileURL == nil)
         return nil;
-    NSString *skimURLString = [NSString stringWithFormat:@"skim%@#page=%lu", 
[[[fileURL filePathURL] absoluteString] substringFromIndex:4], (unsigned 
long)([self pageIndex] + 1)];
-    return [NSURL URLWithString:skimURLString];
+    NSURLComponents *components = [[NSURLComponents alloc] initWithURL:fileURL 
resolvingAgainstBaseURL:NO];
+    [components setScheme:@"skim"];
+    [components setFragment:[NSString stringWithFormat:@"page=%lu", (unsigned 
long)([self pageIndex] + 1)]];
+    NSURL *skimURL = [components URL];
+    [components release];
+    return skimURL;
 }
 
 static inline BOOL lineRectsOverlap(NSRect r1, NSRect r2, BOOL rotated) {

Modified: trunk/SKBookmark.m
===================================================================
--- trunk/SKBookmark.m  2020-12-25 15:49:15 UTC (rev 12090)
+++ trunk/SKBookmark.m  2020-12-27 15:55:36 UTC (rev 12091)
@@ -312,14 +312,20 @@
     if ([self bookmarkType] == SKBookmarkTypeSeparator)
         return nil;
     SKBookmark *bookmark = self;
-    NSMutableArray *components = [NSMutableArray array];
+    NSMutableString *path = [NSMutableString string];
     while ([bookmark parent] != nil) {
         NSString *component = [[bookmark label] 
stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet 
URLBookmarkNameAllowedCharacterSet]];
-        [components insertObject:component atIndex:0];
+        [path replaceCharactersInRange:NSMakeRange(0, 0) withString:component];
+        [path replaceCharactersInRange:NSMakeRange(0, 0) withString:@"/"];
         bookmark = [bookmark parent];
     }
-    NSString *skimURLString = [@"skim://bookmarks/" 
stringByAppendingString:[components componentsJoinedByString:@"/"]];
-    return [NSURL URLWithString:skimURLString];
+    NSURLComponents *components = [[NSURLComponents alloc] init];
+    [components setScheme:@"skim"];
+    [components setHost:@"bookmarks"];
+    [components setPath:path];
+    NSURL *url = [components URL];
+    [components release];
+    return url;
 }
 
 @end

Modified: trunk/SKMainDocument.m
===================================================================
--- trunk/SKMainDocument.m      2020-12-25 15:49:15 UTC (rev 12090)
+++ trunk/SKMainDocument.m      2020-12-27 15:55:36 UTC (rev 12091)
@@ -1028,7 +1028,11 @@
         NSString *searchString = [mainWindowController searchString];
         if ([searchString length] > 0) {
             searchString = [searchString 
stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet 
URLQueryAllowedCharacterSet]];
-            skimURL = [NSURL URLWithString:[[skimURL absoluteString] 
stringByAppendingFormat:@"&search=%@", searchString]];
+            NSURLComponents *components = [[NSURLComponents alloc] 
initWithURL:skimURL resolvingAgainstBaseURL:NO];
+            NSString *fragment = [components fragment];
+            [components setFragment:[fragment length] ? [fragment 
stringByAppendingFormat:@"&search=%@", searchString] : [@"search=" 
stringByAppendingString:searchString]];
+            skimURL = [components URL];
+            [components release];
         }
         NSPasteboard *pboard = [NSPasteboard generalPasteboard];
         [pboard clearContents];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to