Revision: 15637
          http://sourceforge.net/p/skim-app/code/15637
Author:   hofman
Date:     2025-07-11 09:32:17 +0000 (Fri, 11 Jul 2025)
Log Message:
-----------
use separate mehods to start editing text note and updating its layout

Modified Paths:
--------------
    trunk/SKPDFView.m
    trunk/SKTextNoteEditor.h
    trunk/SKTextNoteEditor.m

Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m   2025-07-11 09:16:30 UTC (rev 15636)
+++ trunk/SKPDFView.m   2025-07-11 09:32:17 UTC (rev 15637)
@@ -413,7 +413,7 @@
 - (void)layoutDocumentView {
     [super layoutDocumentView];
     [self resetPDFToolTipRects];
-    [editor layoutWithEvent:nil];
+    [editor layout];
 }
 
 #pragma mark Drawing
@@ -2771,7 +2771,7 @@
     
     editor = [[SKTextNoteEditor alloc] initWithPDFView:self 
annotation:currentAnnotation];
     [[self window] makeFirstResponder:self];
-    [editor layoutWithEvent:theEvent];
+    [editor startEditingWithEvent:theEvent];
     
     [self updatedAnnotation:currentAnnotation];
 }
@@ -3147,7 +3147,7 @@
     if ([annotation isNote])
         [self resetPDFToolTipRects];
     if ([self isEditingAnnotation:annotation])
-        [editor layoutWithEvent:nil];
+        [editor layout];
 }
 
 - (void)registerForDocumentNotifications {
@@ -3185,7 +3185,7 @@
 - (void)handleScaleChangedNotification:(NSNotification *)notification {
     [self resetPDFToolTipRects];
     [self updatePacer];
-    [editor layoutWithEvent:nil];
+    [editor layout];
 }
 
 - (void)handleUpdateTrackingAreasNotification:(NSNotification *)notification {

Modified: trunk/SKTextNoteEditor.h
===================================================================
--- trunk/SKTextNoteEditor.h    2025-07-11 09:16:30 UTC (rev 15636)
+++ trunk/SKTextNoteEditor.h    2025-07-11 09:32:17 UTC (rev 15637)
@@ -52,7 +52,8 @@
 
 @property (nonatomic, nullable, weak, readonly) NSString *currentString;
 
-- (void)layoutWithEvent:(nullable NSEvent *)event;
+- (void)startEditingWithEvent:(nullable NSEvent *)event;
+- (void)updateLayout;
 
 - (void)discardEditing;
 - (BOOL)commitEditing;

Modified: trunk/SKTextNoteEditor.m
===================================================================
--- trunk/SKTextNoteEditor.m    2025-07-11 09:16:30 UTC (rev 15636)
+++ trunk/SKTextNoteEditor.m    2025-07-11 09:32:17 UTC (rev 15637)
@@ -39,7 +39,6 @@
 #import "SKTextNoteEditor.h"
 #import "PDFView_SKExtensions.h"
 #import "PDFAnnotation_SKExtensions.h"
-#import "PDFPage_SKExtensions.h"
 #import "NSView_SKExtensions.h"
 #import "NSEvent_SKExtensions.h"
 #import "SKChainedUndoManager.h"
@@ -90,7 +89,7 @@
     return [textView string] ?: [annotation string];
 }
 
-- (void)updateFrame:(NSNotification *)note {
+- (void)updateFrame {
     NSRect frame = [pdfView backingAlignedRect:[pdfView 
convertRect:[annotation bounds] fromPage:[annotation page]] 
options:NSAlignAllEdgesNearest];
     frame = [pdfView convertRect:frame toView:[pdfView documentView]];
     [self setFrame:frame];
@@ -146,8 +145,6 @@
     [self addSubview:clipView];
     
     [self updateParagraphStyle];
-    
-    [[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(updateFrame:) name:SKPDFPageBoundsDidChangeNotification 
object:[pdfView document]];
 }
 
 - (void)endEditingWithCommit:(BOOL)commit {
@@ -182,29 +179,30 @@
         [thePdfView textNoteEditorDidEndEditing:self];
 }
 
-- (void)layoutWithEvent:(NSEvent *)event {
-    if ([pdfView isPageAtIndexDisplayed:[annotation pageIndex]]) {
-        [self setUpTextView];
-        [self updateFrame:nil];
-        if ([self superview] == nil) {
-            [[pdfView documentView] addSubview:self];
-            [[pdfView window] recalculateKeyViewLoop];
-            [textView scrollPoint:NSZeroPoint];
-            if (event) {
-                [[textView window] makeFirstResponder:textView];
-                [textView mouseDown:event];
-            } else if ([[[pdfView window] firstResponder] isEqual:pdfView]) {
-                NSRange range = NSMakeRange(0, [[textView string] length]);
-                [textView setSelectedRange:range];
-                [[textView window] makeFirstResponder:textView];
-            }
-            [annotation setShouldDisplay:NO];
-        }
+- (void)startEditingWithEvent:(NSEvent *)event {
+    [self setUpTextView];
+    [self updateFrame];
+    [[pdfView documentView] addSubview:self];
+    [[pdfView window] recalculateKeyViewLoop];
+    [textView scrollPoint:NSZeroPoint];
+    [annotation setShouldDisplay:NO];
+    if (event) {
+        [[textView window] makeFirstResponder:textView];
+        [textView mouseDown:event];
     } else {
-        [self endEditingWithCommit:YES];
+        NSRange range = NSMakeRange(0, [[textView string] length]);
+        [textView setSelectedRange:range];
+        [[textView window] makeFirstResponder:textView];
     }
 }
 
+- (void)updateLayout {
+    if ([pdfView isPageAtIndexDisplayed:[annotation pageIndex]])
+        [self updateFrame];
+    else
+        [self endEditingWithCommit:YES];
+}
+
 - (void)discardEditing {
     [self endEditingWithCommit:NO];
 }
@@ -243,7 +241,7 @@
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
change:(NSDictionary *)change context:(void *)context {
     if (context == &SKPDFAnnotationPropertiesObservationContext) {
         if ([keyPath isEqualToString:SKNPDFAnnotationBoundsKey]) {
-            [self updateFrame:nil];
+            [self updateFrame];
         } else if ([keyPath isEqualToString:SKNPDFAnnotationFontKey]) {
             [textView setFont:[annotation font]];
             [self updateParagraphStyle];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to