Revision: 14914
          http://sourceforge.net/p/skim-app/code/14914
Author:   hofman
Date:     2025-02-04 16:39:44 +0000 (Tue, 04 Feb 2025)
Log Message:
-----------
Update line points in annotation values to woraround 10.13 setBounds bug

Modified Paths:
--------------
    trunk/PDFAnnotationLine_SKExtensions.m

Modified: trunk/PDFAnnotationLine_SKExtensions.m
===================================================================
--- trunk/PDFAnnotationLine_SKExtensions.m      2025-02-02 10:10:45 UTC (rev 
14913)
+++ trunk/PDFAnnotationLine_SKExtensions.m      2025-02-04 16:39:44 UTC (rev 
14914)
@@ -63,22 +63,26 @@
 @implementation PDFAnnotationLine (SKExtensions)
 
 static void (*original_setBounds)(id, SEL, NSRect) = NULL;
-static void (*original_setStartPoint)(id, SEL, NSPoint) = NULL;
-static void (*original_setEndPoint)(id, SEL, NSPoint) = NULL;
 
 static void replacement_setBounds(id self, SEL _cmd , NSRect newBounds) {
-    NSPoint startPoint = [self startPoint];
-    NSPoint endPoint = [self endPoint];
+    NSArray *points = [self valueForAnnotationKey:@"/L"];
+    if ([points isKindOfClass:[NSArray class]] && [points count] == 4) {
+        NSPoint d = SKSubstractPoints(newBounds.origin, [self bounds].origin);
+        if (NSEqualPoints(d, NSZeroPoint))
+            points = nil;
+        else
+            points = @[@([points[0] doubleValue] + d.x), @([points[1] 
doubleValue] + d.y), @([points[2] doubleValue] + d.x), @([points[3] 
doubleValue] + d.y)];
+    } else if (points) {
+        points = nil;
+    }
     original_setBounds(self, _cmd, newBounds);
-    original_setStartPoint(self, @selector(setStartPoint:), startPoint);
-    original_setEndPoint(self, @selector(setEndPoint:), endPoint);
+    if (points)
+        [self setValue:points forAnnotationKey:@"/L"];
 }
 
 + (void)load {
     if (@available(macOS 10.14, *)) {} else {
         original_setBounds = (void (*)(id, SEL, 
NSRect))SKReplaceInstanceMethodImplementation(self, @selector(setBounds:), 
(IMP)replacement_setBounds);
-        original_setStartPoint = (void (*)(id, SEL, NSPoint))[self 
instanceMethodForSelector:@selector(setStartPoint:)];
-        original_setEndPoint = (void (*)(id, SEL, NSPoint))[self 
instanceMethodForSelector:@selector(setEndPoint:)];
     }
 }
 

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