Revision: 15396
http://sourceforge.net/p/skim-app/code/15396
Author: hofman
Date: 2025-06-07 15:11:08 +0000 (Sat, 07 Jun 2025)
Log Message:
-----------
check whether popup is in annotations rather than checking page property,
because the page property rremains after removal
Modified Paths:
--------------
trunk/PDFDocument_SKExtensions.m
trunk/SKMainWindowController.m
Modified: trunk/PDFDocument_SKExtensions.m
===================================================================
--- trunk/PDFDocument_SKExtensions.m 2025-06-07 09:16:04 UTC (rev 15395)
+++ trunk/PDFDocument_SKExtensions.m 2025-06-07 15:11:08 UTC (rev 15396)
@@ -303,7 +303,7 @@
PDFAnnotation *popup = [annotation popup];
NSDictionary *userInfo = @{SKPDFDocumentAnnotationKey:annotation,
SKPDFDocumentPageKey:page};
[page addAnnotation:annotation];
- if (popup && [popup page] == nil)
+ if (popup && [[page annotations] containsObject:popup] == NO)
[page addAnnotation:popup];
[[NSNotificationCenter defaultCenter]
postNotificationName:SKPDFDocumentDidAddAnnotationNotification object:self
userInfo:userInfo];
}
@@ -314,7 +314,7 @@
NSDictionary *userInfo = @{SKPDFDocumentAnnotationKey:annotation,
SKPDFDocumentPageKey:page};
[[NSNotificationCenter defaultCenter]
postNotificationName:SKPDFDocumentWillRemoveAnnotationNotification object:self
userInfo:userInfo];
[page removeAnnotation:annotation];
- if (popup && [popup page])
+ if (popup && [[page annotations] containsObject:popup])
[page removeAnnotation:popup];
[[NSNotificationCenter defaultCenter]
postNotificationName:SKPDFDocumentDidRemoveAnnotationNotification object:self
userInfo:userInfo];
}
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2025-06-07 09:16:04 UTC (rev 15395)
+++ trunk/SKMainWindowController.m 2025-06-07 15:11:08 UTC (rev 15396)
@@ -965,6 +965,58 @@
return properties;
}
+- (void)addAnnotations:(NSArray *)notesToAdd removeAnnotations:(NSArray
*)notesToRemove {
+ PDFDocument *pdfDoc = [pdfView document];
+ NSMutableIndexSet *pageIndexes = [NSMutableIndexSet indexSet];
+ NSMutableArray *added = [NSMutableArray array];
+ NSMutableArray *removed = [NSMutableArray array];
+ NSMutableArray *addedSkimNotes = [NSMutableArray array];
+ NSMutableIndexSet *removedIndexes = [NSMutableIndexSet indexSet];
+
+ mwcFlags.addOrRemoveNotesInBulk = 1;
+
+ if ([notesToRemove count]) {
+ for (PDFAnnotation *annotation in notesToRemove) {
+ [removed addObject:@[annotation, [annotation page]]];
+ if ([annotation isSkimNote])
+ [removedIndexes addIndex:[notes indexOfObject:annotation]];
+ [pageIndexes addIndex:[annotation pageIndex]];
+ [pdfDoc removeAnnotation:annotation];
+ }
+ }
+
+ if ([notesToAdd count]) {
+ for (NSArray *annotationAndPage in notesToAdd) {
+ PDFAnnotation *annotation = [annotationAndPage firstObject];
+ [added addObject:annotation];
+ if ([annotation isSkimNote])
+ [addedSkimNotes addObject:annotation];
+ [pageIndexes addIndex:[annotation pageIndex]];
+ [pdfDoc addAnnotation:annotation toPage:[annotationAndPage
lastObject]];
+ }
+ }
+
+ mwcFlags.addOrRemoveNotesInBulk = 0;
+
+ [[[self undoManager] prepareWithInvocationTarget:self]
addAnnotations:removed removeAnnotations:added];
+
+ if ([removedIndexes count])
+ [[self mutableArrayValueForKey:NOTES_KEY]
removeObjectsAtIndexes:removedIndexes];
+ if ([addedSkimNotes count])
+ [self insertNotes:addedSkimNotes atIndexes:[NSIndexSet
indexSetWithIndexesInRange:NSMakeRange([notes count], [addedSkimNotes count])]];
+
+ // make sure we clear the undo handling
+ undoGroupOldPropertiesPerNote = nil;
+ [rightSideController.noteArrayController rearrangeObjects]; // doesn't
seem to be done automatically
+ [rightSideController.noteOutlineView reloadData];
+ [self updateThumbnailsAtPageIndexes:pageIndexes];
+ for (SKSnapshotWindowController *wc in snapshots) {
+ if ([wc isPageInIndexesVisible:pageIndexes])
+ [self snapshotNeedsUpdate:wc lowPriority:NO];
+ }
+ [pdfView resetPDFToolTipRects];
+}
+
- (void)addAnnotationsFromDictionaries:(NSArray *)noteDicts
toDocument:(PDFDocument *)pdfDoc pageIndexes:(NSMutableIndexSet *)pageIndexes
autoUpdate:(BOOL)autoUpdate {
NSMutableArray *notesToAdd = [NSMutableArray array];
BOOL shouldDisplay = [pdfView hideNotes] == NO;
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