Revision: 14898 http://sourceforge.net/p/skim-app/code/14898 Author: hofman Date: 2025-01-28 17:36:53 +0000 (Tue, 28 Jan 2025) Log Message: ----------- reuse function to find pdfview
Modified Paths: -------------- trunk/PDFDocumentView_SKExtensions.m Modified: trunk/PDFDocumentView_SKExtensions.m =================================================================== --- trunk/PDFDocumentView_SKExtensions.m 2025-01-28 17:21:15 UTC (rev 14897) +++ trunk/PDFDocumentView_SKExtensions.m 2025-01-28 17:36:53 UTC (rev 14898) @@ -52,18 +52,18 @@ #pragma mark - -static id fallback_pdfView(id self, SEL _cmd) { +static id get_pdfView(id self, SEL _cmd) { id pdfView = [[self enclosingScrollView] superview]; return [pdfView isKindOfClass:[PDFView class]] ? pdfView : nil; } -static id fallback_ivar_pdfView(id self, SEL _cmd) { +static id ivar_get_pdfView(id self, SEL _cmd) { id pdfView = nil; @try { pdfView = [self valueForKeyPath:@"_private.pdfView"]; } @catch (id exception) { - pdfView = fallback_pdfView(self, _cmd); + pdfView = get_pdfView(self, _cmd); } return pdfView; } @@ -82,14 +82,14 @@ // 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 view = [self enclosingScrollView]; - while ((view = [view superview])) - if ([view isKindOfClass:[PDFView class]]) - break; - return [view menuForEvent:event]; + id pdfView = get_pdfView(self, @selector(pdfView)); + if (pdfView) + return [get_pdfView(self, @selector(pdfView)) menuForEvent:event]; + else + return original_menuForEvent(self, _cmd, event); } -#pragma mark Skim support +#pragma mark Enhanced accessibility support static BOOL replacement_isAccessibilityAlternateUIVisible(id self, SEL _cmd) { id pdfView = [self pdfView]; @@ -141,9 +141,9 @@ if ([PDFDocumentViewClass instancesRespondToSelector:@selector(pdfView)] == NO) { if (class_getInstanceVariable(PDFDocumentViewClass, "_private")) - class_addMethod(PDFDocumentViewClass, @selector(pdfView), (IMP)fallback_ivar_pdfView, "@@:"); + class_addMethod(PDFDocumentViewClass, @selector(pdfView), (IMP)ivar_get_pdfView, "@@:"); else - class_addMethod(PDFDocumentViewClass, @selector(pdfView), (IMP)fallback_pdfView, "@@:"); + class_addMethod(PDFDocumentViewClass, @selector(pdfView), (IMP)get_pdfView, "@@:"); } original_isAccessibilityAlternateUIVisible = (BOOL (*)(id, SEL))SKReplaceInstanceMethodImplementation(PDFDocumentViewClass, @selector(isAccessibilityAlternateUIVisible), (IMP)replacement_isAccessibilityAlternateUIVisible); 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