Revision: 16460
          http://sourceforge.net/p/skim-app/code/16460
Author:   hofman
Date:     2026-09-12 17:58:10 +0000 (Sat, 12 Sep 2026)
Log Message:
-----------
property for setup from bookmark, so we don't have to generate and remove 
bookmark properties

Modified Paths:
--------------
    trunk/SKBookmark.h
    trunk/SKBookmark.m
    trunk/SKDocumentController.m
    trunk/SKMainWindowController.m

Modified: trunk/SKBookmark.h
===================================================================
--- trunk/SKBookmark.h  2026-09-12 17:35:41 UTC (rev 16459)
+++ trunk/SKBookmark.h  2026-09-12 17:58:10 UTC (rev 16460)
@@ -74,6 +74,7 @@
 @property (nonatomic) NSUInteger pageIndex;
 @property (nonatomic, nullable, strong) NSNumber *pageNumber;
 @property (nonatomic, readonly) BOOL hasSetup;
+@property (nonatomic, nullable, readonly) NSDictionary<NSString *, id> *setup;
 @property (nonatomic, nullable, readonly) NSArray<NSDictionary<NSString *, id> 
*> *snapshots;
 @property (nonatomic, nullable, readonly) NSString *tabs;
 @property (nonatomic, nullable, weak) SKBookmark *parent;

Modified: trunk/SKBookmark.m
===================================================================
--- trunk/SKBookmark.m  2026-09-12 17:35:41 UTC (rev 16459)
+++ trunk/SKBookmark.m  2026-09-12 17:58:10 UTC (rev 16460)
@@ -96,7 +96,7 @@
 @implementation SKBookmark
 
 @synthesize parent;
-@dynamic properties, bookmarkType, label, icon, alternateIcon, fileURL, 
fileURLToOpen, fileDescription, toolTip, pageIndex, pageNumber, hasSetup, 
snapshots, tabs, containingBookmarks, children, countOfChildren, 
scriptingParent, entireContents, bookmarks, expanded, skimURL;
+@dynamic properties, bookmarkType, label, icon, alternateIcon, fileURL, 
fileURLToOpen, fileDescription, toolTip, pageIndex, pageNumber, setup, 
snapshots, tabs, containingBookmarks, children, countOfChildren, 
scriptingParent, entireContents, bookmarks, expanded, skimURL;
 
 static Class SKBookmarkClass = Nil;
 
@@ -212,7 +212,7 @@
 - (NSURL *)previewItemURL { return [self fileURL]; }
 - (NSString *)previewItemTitle { return [self label]; }
 
-- (BOOL)hasSetup { return NO; }
+- (NSDictionary *)setup { return nil; }
 
 - (NSArray *)snapshots { return nil; }
 - (NSString *)tabs { return nil; }
@@ -541,7 +541,7 @@
 - (NSImage *)icon {
     NSURL *fileURL = [self fileURL];
     NSString *type = fileURL ? [[NSWorkspace  sharedWorkspace] 
typeOfFile:[fileURL path] error:NULL] : nil;
-    return [[self class] iconForFileType:type hasSetup:[self hasSetup]];
+    return [[self class] iconForFileType:type hasSetup:[setup 
objectForKey:SKDocumentSetupWindowFrameKey] != nil];
 }
 
 - (NSUInteger)pageIndex {
@@ -573,8 +573,14 @@
     }
 }
 
-- (BOOL)hasSetup {
-    return [setup objectForKey:SKDocumentSetupWindowFrameKey] != nil;
+- (NSDictionary *)setup {
+    if (pageIndex != NSNotFound) {
+        NSMutableDictionary *dict = [NSMutableDictionary 
dictionaryWithDictionary:setup];
+        [dict setObject:[NSNumber numberWithUnsignedInteger:pageIndex] 
forKey:PAGEINDEX_KEY];
+        if ([[setup objectForKey:PAGEINDEX_KEY] unsignedIntegerValue] != 
pageIndex)
+            [dict removeObjectForKey:@"scrollPoint"];
+    }
+    return setup;
 }
 
 - (NSArray *)snapshots {

Modified: trunk/SKDocumentController.m
===================================================================
--- trunk/SKDocumentController.m        2026-09-12 17:35:41 UTC (rev 16459)
+++ trunk/SKDocumentController.m        2026-09-12 17:58:10 UTC (rev 16460)
@@ -419,11 +419,7 @@
         
         NSURL *fileURL = [bookmark fileURLToOpen];
         if (fileURL && [fileURL checkResourceIsReachableAndReturnError:NULL] 
&& NO == [fileURL isTrashedFileURL]) {
-            NSDictionary *setup = nil;
-            if ([bookmark hasSetup])
-                setup = [bookmark properties];
-            else if ([bookmark pageIndex] != NSNotFound)
-                setup = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber 
numberWithUnsignedInteger:[bookmark pageIndex]], @"pageIndex", [bookmark 
snapshots], @"snapshots", nil];
+            NSDictionary *setup = [bookmark setup]; // this may be just the 
pageIndex and possibly snapshots
             [self openDocumentWithContentsOfURL:fileURL display:setup == nil 
completionHandler:^(NSDocument *document, BOOL documentWasAlreadyOpen, NSError 
*error){
                 if (document && setup) {
                     if (documentWasAlreadyOpen == NO)

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2026-09-12 17:35:41 UTC (rev 16459)
+++ trunk/SKMainWindowController.m      2026-09-12 17:58:10 UTC (rev 16460)
@@ -594,7 +594,6 @@
 - (void)setCurrentSetup:(NSDictionary *)setup{
     if ([self isWindowLoaded] == NO) {
         [savedNormalSetup setDictionary:setup];
-        [savedNormalSetup removeObjectsForKeys:@[SKDocumentSetupBookmarkKey, 
SKDocumentSetupAliasKey, SKDocumentSetupTabsKey, LABEL_KEY]];
     } else {
         
         NSString *rectString = [setup objectForKey:MAINWINDOWFRAME_KEY];
@@ -616,7 +615,6 @@
         if ([[pdfView document] isLocked]) {
             NSArray *snapshotSetups = [savedNormalSetup 
objectForKey:SNAPSHOTS_KEY];
             [savedNormalSetup addEntriesFromDictionary:setup];
-            [savedNormalSetup 
removeObjectsForKeys:@[SKDocumentSetupBookmarkKey, SKDocumentSetupAliasKey, 
SKDocumentSetupTabsKey, LABEL_KEY]];
             if ([setup objectForKey:SCROLLPOINT_KEY] == nil)
                 [savedNormalSetup removeObjectForKey:SCROLLPOINT_KEY];
             if (applySidePaneWidths)
@@ -628,7 +626,7 @@
         } else {
             if ([self interactionMode] != SKNormalMode) {
                 [savedNormalSetup addEntriesFromDictionary:setup];
-                [savedNormalSetup removeObjectsForKeys:@[CROPBOXES_KEY, 
SNAPSHOTS_KEY, PAGEINDEX_KEY, SCROLLPOINT_KEY, SKDocumentSetupBookmarkKey, 
SKDocumentSetupAliasKey, SKDocumentSetupTabsKey, LABEL_KEY]];
+                [savedNormalSetup removeObjectsForKeys:@[CROPBOXES_KEY, 
SNAPSHOTS_KEY, PAGEINDEX_KEY, SCROLLPOINT_KEY]];
                 if (applySidePaneWidths)
                     [savedNormalSetup 
removeObjectsForKeys:@[LEFTSIDEPANEWIDTH_KEY, RIGHTSIDEPANEWIDTH_KEY]];
             }

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