Revision: 15582
http://sourceforge.net/p/skim-app/code/15582
Author: hofman
Date: 2025-07-02 09:35:17 +0000 (Wed, 02 Jul 2025)
Log Message:
-----------
Handle undo gouping and undo action name for adding multiple notes by itself.
Make current annotation after adding in convenience method.
Modified Paths:
--------------
trunk/SKPDFView.m
Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m 2025-07-02 08:49:06 UTC (rev 15581)
+++ trunk/SKPDFView.m 2025-07-02 09:35:17 UTC (rev 15582)
@@ -207,7 +207,7 @@
- (void)beginNewUndoGroupIfNeeded;
-- (void)addAnnotation:(PDFAnnotation *)annotation toPage:(PDFPage *)page;
+- (void)addAnnotation:(PDFAnnotation *)annotation toPage:(PDFPage *)page
select:(BOOL)shouldSelect;
- (void)removeAnnotation:(PDFAnnotation *)annotation;
- (void)stopPacer;
@@ -1238,15 +1238,20 @@
page = [self currentPage];
+ [self commitEditing];
+ [self beginNewUndoGroupIfNeeded];
+
for (PDFAnnotation *newAnnotation in newAnnotations) {
[newAnnotation setBounds:SKConstrainRect([newAnnotation bounds],
[page boundsForBox:[self displayBox]])];
[newAnnotation registerUserName];
- [self addAnnotation:newAnnotation toPage:page];
+ [[self document] addAnnotation:newAnnotation toPage:page];
}
+ [[self undoManager] setActionName:NSLocalizedString(@"Add Note",
@"Undo action name")];
+
if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
[self setCurrentAnnotation:[newAnnotations lastObject]];
@@ -1314,10 +1319,7 @@
}
[newAnnotation registerUserName];
- [self addAnnotation:newAnnotation toPage:page];
-
- if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
- [self setCurrentAnnotation:newAnnotation];
+ [self addAnnotation:newAnnotation toPage:page select:YES];
} else if (isPlainText == NO) {
@@ -1356,10 +1358,7 @@
[newAnnotation setString:text];
[newAnnotation registerUserName];
- [self addAnnotation:newAnnotation toPage:page];
-
- if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
- [self setCurrentAnnotation:newAnnotation];
+ [self addAnnotation:newAnnotation toPage:page select:YES];
} else {
@@ -2301,10 +2300,7 @@
[(SKNPDFAnnotationNote *)newAnnotation
setExtendedIconType:kSKNPDFTextAnnotationIconImage];
[newAnnotation registerUserName];
- [self addAnnotation:newAnnotation toPage:page];
-
- if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
- [self setCurrentAnnotation:newAnnotation];
+ [self addAnnotation:newAnnotation toPage:page select:YES];
performedDrag = YES;
}
@@ -2379,11 +2375,13 @@
#pragma mark Annotation management
-- (void)addAnnotation:(PDFAnnotation *)annotation toPage:(PDFPage *)page {
+- (void)addAnnotation:(PDFAnnotation *)annotation toPage:(PDFPage *)page
select:(BOOL)shouldSelect {
[self commitEditing];
[self beginNewUndoGroupIfNeeded];
[[self document] addAnnotation:annotation toPage:page];
[[self undoManager] setActionName:NSLocalizedString(@"Add Note", @"Undo
action name")];
+ if (shouldSelect && (toolMode == SKToolModeText || toolMode ==
SKToolModeNote))
+ [self setCurrentAnnotation:annotation];
}
- (void)removeAnnotation:(PDFAnnotation *)annotation {
@@ -2451,6 +2449,9 @@
if ([newAnnotations count] > 0) {
+ [self commitEditing];
+ [self beginNewUndoGroupIfNeeded];
+
for (NSArray *annotationAndPage in newAnnotations) {
newAnnotation = [annotationAndPage firstObject];
page = [annotationAndPage lastObject];
@@ -2457,9 +2458,11 @@
if ([text length] > 0 || [newAnnotation string] == nil)
[newAnnotation setString:text ?: @""];
[newAnnotation registerUserName];
- [self addAnnotation:newAnnotation toPage:page];
+ [[self document] addAnnotation:newAnnotation toPage:page];
}
+ [[self undoManager] setActionName:NSLocalizedString(@"Add Note",
@"Undo action name")];
+
if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
[self setCurrentAnnotation:newAnnotation];
@@ -2475,10 +2478,7 @@
if ([newAnnotation string] == nil)
[newAnnotation setString:@""];
[newAnnotation registerUserName];
- [self addAnnotation:newAnnotation toPage:page];
-
- if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
- [self setCurrentAnnotation:newAnnotation];
+ [self addAnnotation:newAnnotation toPage:page select:YES];
return YES;
} else {
@@ -4171,7 +4171,7 @@
// select a new copy of the annotation
PDFAnnotation *newAnnotation = [PDFAnnotation
newSkimNoteWithProperties:[newCurrentAnnotation SkimNoteProperties]];
[newAnnotation registerUserName];
- [self addAnnotation:newAnnotation toPage:page];
+ [self addAnnotation:newAnnotation toPage:page select:NO];
newCurrentAnnotation = newAnnotation;
} else if (([newCurrentAnnotation isMarkup] ||
(isInk && (newCurrentAnnotation != currentAnnotation ||
(modifiers & (NSEventModifierFlagShift | NSEventModifierFlagCapsLock))))) &&
@@ -4368,7 +4368,7 @@
[annotation setString:[currentAnnotation string]];
}
[annotation registerUserName];
- [self addAnnotation:annotation toPage:page];
+ [self addAnnotation:annotation toPage:page select:NO];
if (currentAnnotation) {
[self removeCurrentAnnotation: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