Revision: 15527
          http://sourceforge.net/p/skim-app/code/15527
Author:   hofman
Date:     2025-06-23 14:54:30 +0000 (Mon, 23 Jun 2025)
Log Message:
-----------
get recent document bookmark only once

Modified Paths:
--------------
    trunk/SKBookmarkController.h
    trunk/SKBookmarkController.m
    trunk/SKMainWindowController.m

Modified: trunk/SKBookmarkController.h
===================================================================
--- trunk/SKBookmarkController.h        2025-06-23 14:32:52 UTC (rev 15526)
+++ trunk/SKBookmarkController.h        2025-06-23 14:54:30 UTC (rev 15527)
@@ -95,8 +95,7 @@
 - (void)replaceBookmarkAtIndex:(NSUInteger)anIndex ofBookmark:(SKBookmark 
*)parent withBookmark:(SKBookmark *)bookmark animate:(BOOL)animate;
 
 - (BOOL)addRecentDocumentForURL:(NSURL *)fileURL 
pageIndex:(NSUInteger)pageIndex snapshots:(nullable 
NSArray<NSDictionary<NSString *, id> *> *)snapshots;
-- (NSUInteger)pageIndexForRecentDocumentAtURL:(NSURL *)fileURL;
-- (NSArray<NSDictionary<NSString *, id> *> 
*)snapshotsForRecentDocumentAtURL:(NSURL *)fileURL;
+- (nullable SKBookmark *)recentDocumentAtURL:(NSURL *)fileURL;
 
 - (BOOL)isBookmarkExpanded:(SKBookmark *)bookmark;
 - (void)setExpanded:(BOOL)flag forBookmark:(SKBookmark *)bookmark;

Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m        2025-06-23 14:32:52 UTC (rev 15526)
+++ trunk/SKBookmarkController.m        2025-06-23 14:54:30 UTC (rev 15527)
@@ -270,15 +270,6 @@
     return NO;
 }
 
-- (NSUInteger)pageIndexForRecentDocumentAtURL:(NSURL *)fileURL {
-    SKBookmark *info = fileURL ? [self recentDocumentAtURL:fileURL] : nil;
-    return info ? [info pageIndex] : NSNotFound;
-}
-
-- (NSArray *)snapshotsForRecentDocumentAtURL:(NSURL *)fileURL {
-    return fileURL ? [[self recentDocumentAtURL:fileURL] snapshots] : nil;
-}
-
 #pragma mark Bookmarks support
 
 - (SKBookmark *)bookmarkForURL:(NSURL *)bookmarkURL {

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2025-06-23 14:32:52 UTC (rev 15526)
+++ trunk/SKMainWindowController.m      2025-06-23 14:54:30 UTC (rev 15527)
@@ -109,6 +109,7 @@
 #import "SKNoteToolbarController.h"
 #import "SKPresentationNotesAuxiliary.h"
 #import "NSCharacterSet_SKExtensions.h"
+#import "SKBookmark.h"
 
 #define MULTIPLICATION_SIGN_CHARACTER (unichar)0x00d7
 
@@ -467,10 +468,18 @@
         [window zoom:self];
     }
     
+    SKBookmark *recentDoc = nil;
+    BOOL lookedForRecentDoc = [doc fileURL] != nil;
+    
     // Go to page?
     SKDestination dest = [self destinationFromSetup:savedNormalSetup];
     if (dest.pageIndex == NSNotFound && [sud 
boolForKey:SKRememberLastPageViewedKey]) {
-        dest.pageIndex = [[SKBookmarkController sharedBookmarkController] 
pageIndexForRecentDocumentAtURL:[doc fileURL]];
+        if (lookedForRecentDoc == NO) {
+            recentDoc = [[SKBookmarkController sharedBookmarkController] 
recentDocumentAtURL:[doc fileURL]];
+            lookedForRecentDoc = YES;
+        }
+        if (recentDoc)
+            dest.pageIndex = [recentDoc pageIndex];
     }
     if (dest.pageIndex != NSNotFound && [[pdfView document] pageCount] > 
dest.pageIndex) {
         if ([[pdfView document] isLocked]) {
@@ -498,8 +507,14 @@
     
     // Open snapshots?
     NSArray *snapshotSetups = [savedNormalSetup objectForKey:SNAPSHOTS_KEY];
-    if ([sud boolForKey:SKRememberSnapshotsKey])
-        snapshotSetups = mergedSnapshotSetups(snapshotSetups, 
[[SKBookmarkController sharedBookmarkController] 
snapshotsForRecentDocumentAtURL:[doc fileURL]]);
+    if ([sud boolForKey:SKRememberSnapshotsKey]) {
+        if (lookedForRecentDoc == NO) {
+            recentDoc = [[SKBookmarkController sharedBookmarkController] 
recentDocumentAtURL:[doc fileURL]];
+            lookedForRecentDoc = YES;
+        }
+        if (recentDoc)
+            snapshotSetups = mergedSnapshotSetups(snapshotSetups, [recentDoc 
snapshots]);
+    }
     if ([snapshotSetups count]) {
         if ([[pdfView document] isLocked])
             [savedNormalSetup setObject:snapshotSetups forKey:SNAPSHOTS_KEY];

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



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to