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