Revision: 14679
          http://sourceforge.net/p/skim-app/code/14679
Author:   hofman
Date:     2024-11-13 15:34:10 +0000 (Wed, 13 Nov 2024)
Log Message:
-----------
declare recent document info flag in NSDocument category, separate methods for 
saving recent document info when needed or not

Modified Paths:
--------------
    trunk/NSDocument_SKExtensions.h
    trunk/NSDocument_SKExtensions.m
    trunk/SKApplicationController.m
    trunk/SKMainDocument.h
    trunk/SKMainDocument.m
    trunk/SKMainWindowController.h
    trunk/SKMainWindowController.m
    trunk/SKMainWindowController_UI.m
    trunk/SKNotesDocument.m

Modified: trunk/NSDocument_SKExtensions.h
===================================================================
--- trunk/NSDocument_SKExtensions.h     2024-11-12 10:33:34 UTC (rev 14678)
+++ trunk/NSDocument_SKExtensions.h     2024-11-13 15:34:10 UTC (rev 14679)
@@ -64,7 +64,9 @@
 
 #pragma mark Document Setup
 
-- (void)saveRecentDocumentInfo:(BOOL)forced;
+- (void)saveRecentDocumentInfo;
+- (void)saveRecentDocumentInfoIfNeeded;
+@property (nonatomic) BOOL recentInfoNeedsUpdate;
 - (void)applySetup:(NSDictionary<NSString *, id> *)setup;
 - (void)applyOptions:(NSDictionary<NSString *, id> *)options;
 @property (nonatomic, nullable, readonly) NSDictionary<NSString *, id> 
*currentDocumentSetup;

Modified: trunk/NSDocument_SKExtensions.m
===================================================================
--- trunk/NSDocument_SKExtensions.m     2024-11-12 10:33:34 UTC (rev 14678)
+++ trunk/NSDocument_SKExtensions.m     2024-11-13 15:34:10 UTC (rev 14679)
@@ -95,8 +95,20 @@
 
 #pragma mark Document Setup
 
-- (void)saveRecentDocumentInfo:(BOOL)forced {}
+- (void)saveRecentDocumentInfo {
+    if ([[SKBookmarkController sharedBookmarkController] 
addRecentDocumentForURL:[self fileURL] pageIndex:NSNotFound snapshots:nil])
+        [self setRecentInfoNeedsUpdate:NO];
+}
 
+- (void)saveRecentDocumentInfoIfNeeded {
+    if ([self recentInfoNeedsUpdate])
+        [self saveRecentDocumentInfo];
+}
+
+- (BOOL)recentInfoNeedsUpdate { return NO; }
+
+- (void)setRecentInfoNeedsUpdate:(BOOL)recentInfoNeedsUpdate {}
+
 - (void)applySetup:(NSDictionary *)setup {}
 
 - (void)applyOptions:(NSDictionary *)options {}

Modified: trunk/SKApplicationController.m
===================================================================
--- trunk/SKApplicationController.m     2024-11-12 10:33:34 UTC (rev 14678)
+++ trunk/SKApplicationController.m     2024-11-13 15:34:10 UTC (rev 14679)
@@ -162,8 +162,7 @@
 - (void)registerCurrentDocuments:(id)timerOrNotification {
     [[NSUserDefaults standardUserDefaults] setObject:[[NSApp orderedDocuments] 
valueForKey:CURRENTDOCUMENTSETUP_KEY] forKey:SKLastOpenFileNamesKey];
     BOOL forced = [timerOrNotification 
isEqual:SKApplicationStartsTerminatingNotification];
-    for (NSDocument *doc in [[NSDocumentController sharedDocumentController] 
documents])
-        [doc saveRecentDocumentInfo:forced];
+    [[[NSDocumentController sharedDocumentController] documents] 
makeObjectsPerformSelector:forced ? @selector(saveRecentDocumentInfo) : 
@selector(saveRecentDocumentInfoIfNeeded)];
 }
 
 #pragma mark NSApplication delegate

Modified: trunk/SKMainDocument.h
===================================================================
--- trunk/SKMainDocument.h      2024-11-12 10:33:34 UTC (rev 14678)
+++ trunk/SKMainDocument.h      2024-11-13 15:34:10 UTC (rev 14679)
@@ -70,6 +70,7 @@
         unsigned int gettingFileType:1;
         unsigned int convertingNotes:1;
         unsigned int needsPasswordToConvert:1;
+        unsigned int recentInfoNeedsUpdate:1;
     } mdFlags;
 }
 

Modified: trunk/SKMainDocument.m
===================================================================
--- trunk/SKMainDocument.m      2024-11-12 10:33:34 UTC (rev 14678)
+++ trunk/SKMainDocument.m      2024-11-13 15:34:10 UTC (rev 14679)
@@ -233,14 +233,14 @@
     [super removeWindowController:windowController];
 }
 
-- (void)saveRecentDocumentInfo:(BOOL)forced {
-    if (forced || [[self mainWindowController] recentInfoNeedsUpdate]) {
-        NSURL *fileURL = [self fileURL];
-        NSUInteger pageIndex = [[[self pdfView] currentPage] pageIndex];
-        NSArray *snapshots = [[[self mainWindowController] snapshots] 
valueForKey:SKSnapshotCurrentSetupKey];
-        if ([[SKBookmarkController sharedBookmarkController] 
addRecentDocumentForURL:fileURL pageIndex:pageIndex snapshots:[snapshots count] 
> 0 ? snapshots : nil])
-            [[self mainWindowController] setRecentInfoNeedsUpdate:NO];
-    }
+- (void)saveRecentDocumentInfo {
+    if ([[mainWindowController window] delegate] == nil)
+        return;
+    NSURL *fileURL = [self fileURL];
+    NSUInteger pageIndex = [[[self pdfView] currentPage] pageIndex];
+    NSArray *snapshots = [[[self mainWindowController] snapshots] 
valueForKey:SKSnapshotCurrentSetupKey];
+    if ([[SKBookmarkController sharedBookmarkController] 
addRecentDocumentForURL:fileURL pageIndex:pageIndex snapshots:[snapshots count] 
> 0 ? snapshots : nil])
+        [self setRecentInfoNeedsUpdate:NO];
 }
 
 - (void)applySetup:(NSDictionary *)setup {
@@ -1407,7 +1407,7 @@
     else
         [synchronizer setFileName:nil];
     
-    [[self mainWindowController] setRecentInfoNeedsUpdate:YES];
+    [self setRecentInfoNeedsUpdate:YES];
     
     [[NSNotificationCenter defaultCenter] 
postNotificationName:SKDocumentFileURLDidChangeNotification object:self];
 }
@@ -1562,6 +1562,14 @@
     return [[self mainWindowController] pdfView];
 }
 
+- (BOOL)recentInfoNeedsUpdate {
+    return mdFlags.recentInfoNeedsUpdate;
+}
+
+- (void)setRecentInfoNeedsUpdate:(BOOL)flag {
+    mdFlags.recentInfoNeedsUpdate = flag;
+}
+
 - (NSDictionary *)presentationOptions {
     SKTransitionController *transitions = [[self mainWindowController] 
transitionControllerCreating:NO];
     SKTransitionInfo *transition = [transitions transition];

Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h      2024-11-12 10:33:34 UTC (rev 14678)
+++ trunk/SKMainWindowController.h      2024-11-13 15:34:10 UTC (rev 14679)
@@ -198,7 +198,6 @@
         unsigned int isSwitchingFullScreen:1;
         unsigned int isAnimatingFindBar:1;
         unsigned int wantsPresentationOrFullScreen:1;
-        unsigned int recentInfoNeedsUpdate:1;
         unsigned int hasCropped:1;
         unsigned int fullSizeContent:1;
         unsigned int needsCleanup:1;
@@ -285,8 +284,6 @@
 @property (nonatomic, readonly) BOOL leftSidePaneIsOpen, rightSidePaneIsOpen;
 @property (nonatomic, readonly) CGFloat leftSideWidth, rightSideWidth;
 
-@property (nonatomic) BOOL recentInfoNeedsUpdate;
-
 @property (nonatomic, nullable, readonly) NSMenu *notesMenu;
 
 @property (nonatomic) BOOL hasOverview;

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2024-11-12 10:33:34 UTC (rev 14678)
+++ trunk/SKMainWindowController.m      2024-11-13 15:34:10 UTC (rev 14679)
@@ -215,7 +215,7 @@
 @implementation SKMainWindowController
 
 @synthesize mainWindow, splitView, topConstraint, centerContentView, 
pdfSplitView, pdfContentView, findBarTopConstraint, statusBar, pdfView, 
secondaryPdfView, leftSideController, rightSideController, leftSideContentView, 
rightSideContentView, presentationNotesDocument, presentationNotesOffset, 
notes, thumbnails, snapshots, searchResults, groupedSearchResults, tags, 
rating, pageLabel, interactionMode, placeholderPdfDocument;
-@dynamic pdfDocument, presentationUndoManager, selectedNotes, hasNotes, 
widgetProperties, currentPage, leftSidePaneState, rightSidePaneState, 
findPaneState, displaysFindPane, leftSidePaneIsOpen, rightSidePaneIsOpen, 
recentInfoNeedsUpdate, searchString, hasOverview, notesMenu;
+@dynamic pdfDocument, presentationUndoManager, selectedNotes, hasNotes, 
widgetProperties, currentPage, leftSidePaneState, rightSidePaneState, 
findPaneState, displaysFindPane, leftSidePaneIsOpen, rightSidePaneIsOpen, 
searchString, hasOverview, notesMenu;
 
 + (BOOL)automaticallyNotifiesObserversOfPageLabel { return NO; }
 
@@ -488,7 +488,7 @@
         [savedNormalSetup removeAllObjects];
     }
     
-    [self setRecentInfoNeedsUpdate:YES];
+    [[self document] setRecentInfoNeedsUpdate:YES];
     
     mwcFlags.settingUpWindow = 0;
 }
@@ -1448,14 +1448,6 @@
     return presentationUndoManager;
 }
 
-- (BOOL)recentInfoNeedsUpdate {
-    return mwcFlags.recentInfoNeedsUpdate && [self isWindowLoaded] && [[self 
window] delegate];
-}
-
-- (void)setRecentInfoNeedsUpdate:(BOOL)flag {
-    mwcFlags.recentInfoNeedsUpdate = flag;
-}
-
 - (NSMenu *)notesMenu {
     return [[rightSideController.noteOutlineView headerView] menu];
 }
@@ -2375,7 +2367,7 @@
             [rightSideController.snapshotTableView 
insertRowsAtIndexes:[NSIndexSet indexSetWithIndex:row] withAnimation:options];
         }
         [rightSideController.snapshotTableView endUpdates];
-        [self setRecentInfoNeedsUpdate:YES];
+        [[self document] setRecentInfoNeedsUpdate:YES];
     }
 }
 
@@ -2395,7 +2387,7 @@
         if (i != NSNotFound)
             [self removeObjectFromSnapshotsAtIndex:i];
         [rightSideController.snapshotTableView endUpdates];
-        [self setRecentInfoNeedsUpdate:YES];
+        [[self document] setRecentInfoNeedsUpdate:YES];
     }
 }
 
@@ -2404,13 +2396,13 @@
         [self snapshotNeedsUpdate:controller placeholder:NO];
         [rightSideController.snapshotArrayController rearrangeObjects];
         [rightSideController.snapshotTableView reloadData];
-        [self setRecentInfoNeedsUpdate:YES];
+        [[self document] setRecentInfoNeedsUpdate:YES];
     }
 }
 
 - (void)snapshotControllerDidMove:(SKSnapshotWindowController *)controller {
     if (controller != presentationPreview) {
-        [self setRecentInfoNeedsUpdate:YES];
+        [[self document] setRecentInfoNeedsUpdate:YES];
     }
 }
 
@@ -2449,7 +2441,7 @@
             [self toggleRightSidePane:self];
         }
     }
-    [self setRecentInfoNeedsUpdate:YES];
+    [[self document] setRecentInfoNeedsUpdate:YES];
     return rect;
 }
 

Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m   2024-11-12 10:33:34 UTC (rev 14678)
+++ trunk/SKMainWindowController_UI.m   2024-11-13 15:34:10 UTC (rev 14679)
@@ -250,7 +250,7 @@
 
 - (void)windowWillClose:(NSNotification *)notification {
     if ([[notification object] isEqual:[self window]]) {
-        [[self document] saveRecentDocumentInfo:YES];
+        [[self document] saveRecentDocumentInfo];
         if ([[pdfView document] isFinding])
             [[pdfView document] cancelFindString];
         if ((mwcFlags.isEditingTable || [pdfView isEditing]) && [self 
commitEditing] == NO)
@@ -1993,7 +1993,7 @@
     if ([[NSUserDefaults standardUserDefaults] 
boolForKey:SKDisplayPageBoundsKey])
         [self updateRightStatus];
     
-    mwcFlags.recentInfoNeedsUpdate = 1;
+    [[self document] setRecentInfoNeedsUpdate:YES];
 }
 
 - (void)handleDisplayBoxChangedNotification:(NSNotification *)notification {

Modified: trunk/SKNotesDocument.m
===================================================================
--- trunk/SKNotesDocument.m     2024-11-12 10:33:34 UTC (rev 14678)
+++ trunk/SKNotesDocument.m     2024-11-13 15:34:10 UTC (rev 14679)
@@ -190,7 +190,7 @@
     [menu addItem:[NSMenuItem separatorItem]];
     [[menu addItemWithTitle:NSLocalizedString(@"Note Type", @"Menu item 
title") action:NULL keyEquivalent:@""] setSubmenu:[noteTypeSheetController 
noteTypeMenu]];
     
-    ndFlags.recentInfoNeedsUpdate = YES;
+    [self setRecentInfoNeedsUpdate:YES];
     
     ndFlags.settingUpWindow = NO;
 }
@@ -197,7 +197,7 @@
 
 - (void)windowWillClose:(NSNotification *)notification {
     [pdfDocument setContainingDocument:nil];
-    [self saveRecentDocumentInfo:YES];
+    [self saveRecentDocumentInfo];
 }
 
 - (void)windowDidResize:(NSNotification *)notification {
@@ -428,18 +428,19 @@
     }
 }
 
-- (void)saveRecentDocumentInfo:(BOOL)forced {
-    if (forced || ndFlags.recentInfoNeedsUpdate) {
-        if ([[SKBookmarkController sharedBookmarkController] 
addRecentDocumentForURL:[self fileURL] pageIndex:NSNotFound snapshots:nil])
-            ndFlags.recentInfoNeedsUpdate = NO;
-    }
+- (BOOL)recentInfoNeedsUpdate {
+    return ndFlags.recentInfoNeedsUpdate;
 }
 
+- (void)setRecentInfoNeedsUpdate:(BOOL)flag {
+    ndFlags.recentInfoNeedsUpdate = flag;
+}
+
 - (void)setFileURL:(NSURL *)absoluteURL {
     if (absoluteURL)
         [self setSourceFileURL:nil];
     [super setFileURL:absoluteURL];
-    ndFlags.recentInfoNeedsUpdate = YES;
+    [self setRecentInfoNeedsUpdate:YES];
     [[NSNotificationCenter defaultCenter] 
postNotificationName:SKDocumentFileURLDidChangeNotification object:self];
 }
 

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