Revision: 15951
          http://sourceforge.net/p/skim-app/code/15951
Author:   hofman
Date:     2026-01-03 18:21:11 +0000 (Sat, 03 Jan 2026)
Log Message:
-----------
don't define pdfView method in PDFDocumentView when missing

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

Modified: trunk/PDFDocumentView_SKExtensions.m
===================================================================
--- trunk/PDFDocumentView_SKExtensions.m        2026-01-03 17:51:28 UTC (rev 
15950)
+++ trunk/PDFDocumentView_SKExtensions.m        2026-01-03 18:21:11 UTC (rev 
15951)
@@ -52,20 +52,20 @@
 
 #pragma mark -
 
-static id get_pdfView(id self, SEL _cmd) {
-    id pdfView = [[self enclosingScrollView] superview];
-    return [pdfView isKindOfClass:[PDFView class]] ? pdfView : nil;
+static id enclosingPDFView(id self) {
+    if (self == nil)
+        return nil;
+    else if ([self isKindOfClass:[PDFView class]])
+        return self;
+    else
+        return enclosingPDFView([self superview]);
 }
 
-static id ivar_get_pdfView(id self, SEL _cmd) {
-    id pdfView = nil;
-    @try {
-        pdfView = [self valueForKeyPath:@"_private.pdfView"];
-    }
-    @catch (id exception) {
-        pdfView = get_pdfView(self, _cmd);
-    }
-    return pdfView;
+static id pdfView(id self) {
+    if ([self respondsToSelector:@selector(pdfView)])
+        return [self pdfView];
+    else
+        return enclosingPDFView(self);
 }
 
 static id (*original_menuForEvent)(id, SEL, id) = NULL;
@@ -82,7 +82,7 @@
 
 // On Sierra and later menuForEvent: is forwarded to the PDFView of the 
PDFPage rather than the actual PDFView,
 static NSMenu *replacement_menuForEvent(id self, SEL _cmd, NSEvent *event) {
-    id pdfView = get_pdfView(self, @selector(pdfView));
+    id pdfView = enclosingPDFView(self);
     if (pdfView)
         return [pdfView menuForEvent:event];
     else
@@ -92,23 +92,19 @@
 #pragma mark Enhanced accessibility support
 
 static BOOL replacement_isAccessibilityAlternateUIVisible(id self, SEL _cmd) {
-    id pdfView = [self pdfView];
-    return [pdfView isAccessibilityAlternateUIVisible];
+    return [pdfView(self) isAccessibilityAlternateUIVisible];
 }
 
 static BOOL replacement_accessibilityPerformShowAlternateUI(id self, SEL _cmd) 
{
-    id pdfView = [self pdfView];
-    return [pdfView accessibilityPerformShowAlternateUI];
+    return [pdfView(self) accessibilityPerformShowAlternateUI];
 }
 
 static BOOL replacement_accessibilityPerformShowDefaultUI(id self, SEL _cmd) {
-    id pdfView = [self pdfView];
-    return [pdfView accessibilityPerformShowDefaultUI];
+    return [pdfView(self) accessibilityPerformShowDefaultUI];
 }
 
 static BOOL replacement_accessibilityPerformShowMenu(id self, SEL _cmd) {
-    id pdfView = [self pdfView];
-    return [pdfView accessibilityPerformShowMenu];
+    return [pdfView(self) accessibilityPerformShowMenu];
 }
 
 static BOOL replacement_annotation_accessibilityPerformPress(id self, SEL 
_cmd) {
@@ -139,13 +135,6 @@
     if (PDFDocumentViewClass == Nil)
         return;
 
-    if ([PDFDocumentViewClass instancesRespondToSelector:@selector(pdfView)] 
== NO) {
-        if (class_getInstanceVariable(PDFDocumentViewClass, "_private"))
-            class_addMethod(PDFDocumentViewClass, @selector(pdfView), 
(IMP)ivar_get_pdfView, "@@:");
-        else
-            class_addMethod(PDFDocumentViewClass, @selector(pdfView), 
(IMP)get_pdfView, "@@:");
-    }
-    
     original_isAccessibilityAlternateUIVisible = (BOOL (*)(id, 
SEL))SKReplaceInstanceMethodImplementation(PDFDocumentViewClass, 
@selector(isAccessibilityAlternateUIVisible), 
(IMP)replacement_isAccessibilityAlternateUIVisible);
     original_accessibilityPerformShowAlternateUI = (BOOL (*)(id, 
SEL))SKReplaceInstanceMethodImplementation(PDFDocumentViewClass, 
@selector(accessibilityPerformShowAlternateUI), 
(IMP)replacement_accessibilityPerformShowAlternateUI);
     original_accessibilityPerformShowDefaultUI = (BOOL (*)(id, 
SEL))SKReplaceInstanceMethodImplementation(PDFDocumentViewClass, 
@selector(accessibilityPerformShowDefaultUI), 
(IMP)replacement_accessibilityPerformShowDefaultUI);

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

Reply via email to