Revision: 15405
http://sourceforge.net/p/skim-app/code/15405
Author: hofman
Date: 2025-06-08 08:45:07 +0000 (Sun, 08 Jun 2025)
Log Message:
-----------
separate methods to add and remove annotations oin bulk for add/replace and for
convert
Modified Paths:
--------------
trunk/SKMainDocument.m
trunk/SKMainWindowController.h
trunk/SKMainWindowController.m
Modified: trunk/SKMainDocument.m
===================================================================
--- trunk/SKMainDocument.m 2025-06-08 08:37:40 UTC (rev 15404)
+++ trunk/SKMainDocument.m 2025-06-08 08:45:07 UTC (rev 15405)
@@ -1202,7 +1202,7 @@
dispatch_async(dispatch_get_main_queue(), ^{
- [[self mainWindowController]
addAnnotationsFromDictionaries:noteDicts removeAnnotations:annotations];
+ [[self mainWindowController]
addConvertedAnnotationsFromDictionaries:noteDicts
removeAnnotations:annotations];
[self setPDFData:data pageOffsets:offsets];
Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h 2025-06-08 08:37:40 UTC (rev 15404)
+++ trunk/SKMainWindowController.h 2025-06-08 08:45:07 UTC (rev 15405)
@@ -318,6 +318,7 @@
- (void)setPdfDocument:(nullable PDFDocument *)pdfDocument
addAnnotationsFromDictionaries:(nullable NSArray<NSDictionary<NSString *, id>
*> *)noteDicts;
- (void)addAnnotationsFromDictionaries:(NSArray<NSDictionary<NSString *, id>
*> *)noteDicts removeAnnotations:(nullable NSArray<PDFAnnotation *>
*)notesToRemove;
+- (void)addConvertedAnnotationsFromDictionaries:(NSArray<NSDictionary<NSString
*, id> *> *)noteDicts removeAnnotations:(nullable NSArray<PDFAnnotation *>
*)notesToRemove;
- (void)applySetup:(NSDictionary<NSString *, id> *)setup;
- (NSDictionary<NSString *, id> *)currentSetup;
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2025-06-08 08:37:40 UTC (rev 15404)
+++ trunk/SKMainWindowController.m 2025-06-08 08:45:07 UTC (rev 15405)
@@ -984,7 +984,7 @@
[pdfDoc removeAnnotation:annotation];
}
}
-
+
if ([notesAndPagesToAdd count]) {
BOOL shouldDisplay = [pdfView hideNotes] == NO;
for (NSArray *annotationAndPage in notesAndPagesToAdd) {
@@ -997,7 +997,7 @@
[pdfDoc addAnnotation:annotation toPage:page];
}
}
-
+
mwcFlags.addOrRemoveNotesInBulk = 0;
[[[[self document] undoManager] prepareWithInvocationTarget:self]
addAnnotations:removedNotesAndPages removeAnnotations:addedNotes];
@@ -1050,32 +1050,34 @@
}
- (void)addAnnotationsFromDictionaries:(NSArray *)noteDicts
removeAnnotations:(NSArray *)notesToRemove {
- // notesToRemove is either nil (add), self.notes (replace), or non Skim
notes (convert)
- BOOL isAddOrReplace = [notesToRemove count] == 0 || [[notesToRemove
firstObject] isSkimNote];
- NSMutableArray *widgetDicts = isAddOrReplace ? [NSMutableArray array] :
nil;
- NSArray *notesAndPagesToAdd = [self
annotationsAndPagesFromDictionaries:noteDicts forDocument:[pdfView document]
autoUpdate:isAddOrReplace == NO widgetDictionaries:widgetDicts];
+ NSMutableArray *widgetDicts = [NSMutableArray array];
+ NSArray *notesAndPagesToAdd = [self
annotationsAndPagesFromDictionaries:noteDicts forDocument:[pdfView document]
autoUpdate:NO widgetDictionaries:widgetDicts];
- if (isAddOrReplace) {
- if ([notesToRemove count]) {
- [pdfView removePDFToolTipRects];
- // remove the current annotations
- [pdfView setCurrentAnnotation:nil];
+ if ([notesToRemove count]) {
+ [pdfView removePDFToolTipRects];
+ // remove the current annotations
+ [pdfView setCurrentAnnotation:nil];
+ }
+
+ if (notesToRemove && [widgets count]) {
+ for (PDFAnnotation *widget in widgets) {
+ id origValue = [widgetValues objectForKey:widget];
+ if ([([widget objectValue] ?: @"") isEqual:(origValue ?: @"")] ==
NO)
+ [widget setObjectValue:origValue];
}
-
- if (notesToRemove && [widgets count]) {
- for (PDFAnnotation *widget in widgets) {
- id origValue = [widgetValues objectForKey:widget];
- if ([([widget objectValue] ?: @"") isEqual:(origValue ?: @"")]
== NO)
- [widget setObjectValue:origValue];
- }
- }
- if ([widgetDicts count])
- [self changeWidgetsFromDictionaries:widgetDicts];
}
+ if ([widgetDicts count])
+ [self changeWidgetsFromDictionaries:widgetDicts];
[self addAnnotations:notesAndPagesToAdd removeAnnotations:notesToRemove];
}
+- (void)addConvertedAnnotationsFromDictionaries:(NSArray *)noteDicts
removeAnnotations:(NSArray *)notesToRemove {
+ NSArray *notesAndPagesToAdd = [self
annotationsAndPagesFromDictionaries:noteDicts forDocument:[pdfView document]
autoUpdate:YES widgetDictionaries:nil];
+
+ [self addAnnotations:notesAndPagesToAdd removeAnnotations:notesToRemove];
+}
+
- (void)setPdfDocument:(PDFDocument *)pdfDocument
addAnnotationsFromDictionaries:(NSArray *)noteDicts {
PDFDocument *pdfDoc = pdfDocument;
NSMutableArray *widgetProperties = nil;
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