|
From: <ho...@us...> - 2025-07-11 22:03:20
|
Revision: 15645
http://sourceforge.net/p/skim-app/code/15645
Author: hofman
Date: 2025-07-11 22:03:17 +0000 (Fri, 11 Jul 2025)
Log Message:
-----------
let pdfview make itself first responder after editing based on delegate method parameter. No need for delegate to be a responder.
Modified Paths:
--------------
trunk/SKPDFView.m
trunk/SKTextNoteEditor.h
trunk/SKTextNoteEditor.m
Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m 2025-07-11 16:33:57 UTC (rev 15644)
+++ trunk/SKPDFView.m 2025-07-11 22:03:17 UTC (rev 15645)
@@ -2793,9 +2793,12 @@
[[self delegate] PDFViewDidBeginEditing:self];
}
-- (void)textNoteEditorDidEndEditing:(SKTextNoteEditor *)textNoteEditor {
+- (void)textNoteEditorDidEndEditing:(SKTextNoteEditor *)textNoteEditor wasFirstResponder:(BOOL)wasFirstResponder {
editor = nil;
+ if (wasFirstResponder)
+ [[self window] makeFirstResponder:self];
+
[self updatedAnnotation:currentAnnotation];
if ([[self delegate] respondsToSelector:@selector(PDFViewDidEndEditing:)])
Modified: trunk/SKTextNoteEditor.h
===================================================================
--- trunk/SKTextNoteEditor.h 2025-07-11 16:33:57 UTC (rev 15644)
+++ trunk/SKTextNoteEditor.h 2025-07-11 22:03:17 UTC (rev 15645)
@@ -45,12 +45,12 @@
@interface SKTextNoteEditor : NSView <NSTextViewDelegate> {
NSTextView *textView;
- __weak NSResponder<SKTextNoteEditorDelegate> *delegate;
+ __weak id<SKTextNoteEditorDelegate> delegate;
PDFAnnotation *annotation;
NSUndoManager *undoManager;
}
-- (instancetype)initWithAnnotation:(PDFAnnotation *)anAnnotation delegate:(NSResponder<SKTextNoteEditorDelegate> *)aDelegate;
+- (instancetype)initWithAnnotation:(PDFAnnotation *)anAnnotation delegate:(id<SKTextNoteEditorDelegate>)aDelegate;
@property (nonatomic, nullable, weak, readonly) NSString *currentString;
@@ -62,7 +62,7 @@
@protocol SKTextNoteEditorDelegate <NSObject>;
- (void)textNoteEditorSetFrame:(SKTextNoteEditor *)textNoteEditor;
- (void)textNoteEditorDidBeginEditing:(SKTextNoteEditor *)textNoteEditor;
-- (void)textNoteEditorDidEndEditing:(SKTextNoteEditor *)textNoteEditor;
+- (void)textNoteEditorDidEndEditing:(SKTextNoteEditor *)textNoteEditor wasFirstResponder:(BOOL)wasFirstResponder;
@end
NS_ASSUME_NONNULL_END
Modified: trunk/SKTextNoteEditor.m
===================================================================
--- trunk/SKTextNoteEditor.m 2025-07-11 16:33:57 UTC (rev 15644)
+++ trunk/SKTextNoteEditor.m 2025-07-11 22:03:17 UTC (rev 15645)
@@ -58,7 +58,7 @@
return @[SKNPDFAnnotationBoundsKey, SKNPDFAnnotationFontKey, SKNPDFAnnotationFontColorKey, SKNPDFAnnotationAlignmentKey, SKNPDFAnnotationColorKey, SKNPDFAnnotationBorderKey, SKNPDFAnnotationStringKey];
}
-- (instancetype)initWithAnnotation:(PDFAnnotation *)anAnnotation delegate:(NSResponder<SKTextNoteEditorDelegate> *)aDelegate {
+- (instancetype)initWithAnnotation:(PDFAnnotation *)anAnnotation delegate:(id<SKTextNoteEditorDelegate>)aDelegate {
self = [super initWithFrame:[annotation bounds]];
if (self) {
delegate = aDelegate;
@@ -156,19 +156,19 @@
// avoid getting textDidEndEditing: messages
[textView setDelegate:nil];
+ BOOL wasFirstResponder = NO;
+
if ([self superview]) {
NSWindow *window = [self window];
- BOOL wasFirstResponder = (textView && [window firstResponder] == textView);
+ wasFirstResponder = (textView && [window firstResponder] == textView);
[self removeFromSuperview];
[window recalculateKeyViewLoop];
- if (wasFirstResponder)
- [window makeFirstResponder:delegate];
}
- NSResponder<SKTextNoteEditorDelegate> *theDelegate = delegate;
+ id<SKTextNoteEditorDelegate> theDelegate = delegate;
delegate = nil;
- [theDelegate textNoteEditorDidEndEditing:self];
+ [theDelegate textNoteEditorDidEndEditing:self wasFirstResponder:wasFirstResponder];
}
- (void)startEditingWithEvent:(NSEvent *)event {
@@ -207,7 +207,7 @@
- (NSUndoManager *)undoManagerForTextView:(NSTextView *)view {
if (undoManager == nil)
- undoManager = [[SKChainedUndoManager alloc] initWithNextUndoManager:[delegate undoManager]];
+ undoManager = [[SKChainedUndoManager alloc] initWithNextUndoManager:[self undoManager]];
return undoManager;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|