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