Revision: 15446
http://sourceforge.net/p/skim-app/code/15446
Author: hofman
Date: 2025-06-12 14:16:03 +0000 (Thu, 12 Jun 2025)
Log Message:
-----------
Add local variable. Save normal setup when reverting to locked document
together. Restore page only for unlocked documents.
Modified Paths:
--------------
trunk/SKMainWindowController.m
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2025-06-11 22:24:10 UTC (rev 15445)
+++ trunk/SKMainWindowController.m 2025-06-12 14:16:03 UTC (rev 15446)
@@ -1081,13 +1081,19 @@
NSArray *snapshotDicts = nil;
NSDictionary *openState = nil;
BOOL isLocked = [pdfDocument isLocked];
+ NSUInteger pageCount = [pdfDocument pageCount];
if (oldPdfDoc) {
// this is a revert
// need to clean up data and actions, and remember settings to restore
dest = [pdfView currentDestination:YES];
- if (secondaryPdfView)
+ if (dest.pageIndex >= pageCount && dest.pageIndex != NSNotFound)
+ dest = (SKDestination){pageCount - 1, SKUnspecifiedPoint};
+ if (secondaryPdfView) {
secondaryDest = [secondaryPdfView currentDestination:YES];
+ if (secondaryDest.pageIndex >= pageCount &&
secondaryDest.pageIndex != NSNotFound)
+ secondaryDest = (SKDestination){pageCount - 1,
SKUnspecifiedPoint};
+ }
openState = [self expansionStateForOutline:[[pdfView document]
outlineRoot]];
[oldPdfDoc cancelFindString];
@@ -1124,6 +1130,12 @@
if ([self interactionMode] == SKNormalMode)
[savedNormalSetup setDictionary:[pdfView displaySettings]];
[savedNormalSetup setObject:@YES forKey:LOCKED_KEY];
+ if (dest.pageIndex != NSNotFound)
+ [savedNormalSetup setObject:[NSNumber
numberWithUnsignedInteger:dest.pageIndex] forKey:PAGEINDEX_KEY];
+ if (NSEqualPoints(dest.point, SKUnspecifiedPoint) == NO)
+ [savedNormalSetup setObject:NSStringFromPoint(dest.point)
forKey:SCROLLPOINT_KEY];
+ if ([snapshotDicts count])
+ [savedNormalSetup setObject:snapshotDicts
forKey:SNAPSHOTS_KEY];
} else
[self performSelector:@selector(documentDidUnlockDelayed)
withObject:nil afterDelay:0.0];
}
@@ -1138,10 +1150,10 @@
if ([noteDicts count]) {
PDFDocument *pdfDoc = pdfDocument;
if ([pdfDoc allowsNotes] == NO) {
- NSUInteger i, pageCount = MIN([pdfDoc pageCount], [[noteDicts
valueForKeyPath:@"@max.pageIndex"] unsignedIntegerValue] + 1);
+ NSUInteger i, iMax = MIN(pageCount, [[noteDicts
valueForKeyPath:@"@max.pageIndex"] unsignedIntegerValue] + 1);
pdfDoc = placeholderPdfDocument = [[SKPDFDocument alloc] init];
[placeholderPdfDocument setContainingDocument:[self document]];
- for (i = 0; i < pageCount; i++)
+ for (i = 0; i < iMax; i++)
[placeholderPdfDocument insertPage:[[SKPDFPage alloc] init]
atIndex:i];
}
@@ -1185,40 +1197,19 @@
[self updatePageLabelsAndOutlineForExpansionState:openState];
[self updateNoteSelection];
- if ([snapshotDicts count]) {
- if (isLocked)
- [savedNormalSetup setObject:snapshotDicts forKey:SNAPSHOTS_KEY];
- else
- [self showSnapshotsWithSetups:snapshotDicts];
- }
+ if (isLocked == NO && [snapshotDicts count])
+ [self showSnapshotsWithSetups:snapshotDicts];
- if ([pdfDocument pageCount] && (dest.pageIndex != NSNotFound ||
secondaryDest.pageIndex != NSNotFound)) {
- if (dest.pageIndex != NSNotFound) {
- if (dest.pageIndex >= [pdfDocument pageCount]) {
- dest.pageIndex = [pdfDocument pageCount] - 1;
- dest.point = SKUnspecifiedPoint;
- }
- if (isLocked) {
- [savedNormalSetup setObject:[NSNumber
numberWithUnsignedInteger:dest.pageIndex] forKey:PAGEINDEX_KEY];
- if (NSEqualPoints(dest.point, SKUnspecifiedPoint) == NO)
- [savedNormalSetup setObject:NSStringFromPoint(dest.point)
forKey:SCROLLPOINT_KEY];
- } else {
- [pdfView goToCurrentDestination:dest];
- }
- }
- if (secondaryDest.pageIndex != NSNotFound) {
- if (secondaryDest.pageIndex >= [pdfDocument pageCount]) {
- secondaryDest.pageIndex = [pdfDocument pageCount] - 1;
- secondaryDest.point = SKUnspecifiedPoint;
- }
+ if (isLocked == NO && pageCount && dest.pageIndex != NSNotFound) {
+ [pdfView goToCurrentDestination:dest];
+ if (secondaryDest.pageIndex != NSNotFound)
[secondaryPdfView goToCurrentDestination:secondaryDest];
- }
[pdfView resetHistory];
}
- if (markedPage.pageIndex >= [pdfDocument pageCount])
+ if (markedPage.pageIndex >= pageCount)
markedPage.pageIndex = beforeMarkedPage.pageIndex = NSNotFound;
- else if (beforeMarkedPage.pageIndex >= [pdfDocument pageCount])
+ else if (beforeMarkedPage.pageIndex >= pageCount)
beforeMarkedPage.pageIndex = NSNotFound;
// the number of pages may have changed
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