Revision: 13027 http://sourceforge.net/p/skim-app/code/13027 Author: hofman Date: 2022-07-16 17:27:19 +0000 (Sat, 16 Jul 2022) Log Message: ----------- implement show menu accessibility action in pdfviews
Modified Paths: -------------- trunk/PDFDocumentView_SKExtensions.m trunk/PDFView_SKExtensions.m trunk/SKSecondaryPDFView.m trunk/SKSnapshotPDFView.m Modified: trunk/PDFDocumentView_SKExtensions.m =================================================================== --- trunk/PDFDocumentView_SKExtensions.m 2022-07-16 14:32:14 UTC (rev 13026) +++ trunk/PDFDocumentView_SKExtensions.m 2022-07-16 17:27:19 UTC (rev 13027) @@ -69,9 +69,10 @@ static void (*original_updateTrackingAreas)(id, SEL) = NULL; +static BOOL (*original_isAccessibilityAlternateUIVisible)(id, SEL) = NULL; static BOOL (*original_accessibilityPerformShowAlternateUI)(id, SEL) = NULL; static BOOL (*original_accessibilityPerformShowDefaultUI)(id, SEL) = NULL; -static BOOL (*original_isAccessibilityAlternateUIVisible)(id, SEL) = NULL; +static BOOL (*original_accessibilityPerformShowMenu)(id, SEL) = NULL; #pragma mark PDFPageView fix @@ -93,6 +94,11 @@ [pdfView resetPDFToolTipRects]; } +static BOOL replacement_isAccessibilityAlternateUIVisible(id self, SEL _cmd) { + id pdfView = [self pdfView]; + return [pdfView isAccessibilityAlternateUIVisible]; +} + static BOOL replacement_accessibilityPerformShowAlternateUI(id self, SEL _cmd) { id pdfView = [self pdfView]; return [pdfView accessibilityPerformShowAlternateUI]; @@ -103,9 +109,9 @@ return [pdfView accessibilityPerformShowDefaultUI]; } -static BOOL replacement_isAccessibilityAlternateUIVisible(id self, SEL _cmd) { +static BOOL replacement_accessibilityPerformShowMenu(id self, SEL _cmd) { id pdfView = [self pdfView]; - return [pdfView isAccessibilityAlternateUIVisible]; + return [pdfView accessibilityPerformShowMenu]; } #pragma mark SKSwizzlePDFDocumentViewMethods @@ -134,7 +140,8 @@ original_updateTrackingAreas = (void (*)(id, SEL))SKReplaceInstanceMethodImplementation(PDFDocumentViewClass, @selector(updateTrackingAreas), (IMP)replacement_updateTrackingAreas); + 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); - original_isAccessibilityAlternateUIVisible = (BOOL (*)(id, SEL))SKReplaceInstanceMethodImplementation(PDFDocumentViewClass, @selector(isAccessibilityAlternateUIVisible), (IMP)replacement_isAccessibilityAlternateUIVisible); + original_accessibilityPerformShowMenu = (BOOL (*)(id, SEL))SKReplaceInstanceMethodImplementation(PDFDocumentViewClass, @selector(accessibilityPerformShowMenu), (IMP)replacement_accessibilityPerformShowMenu); } Modified: trunk/PDFView_SKExtensions.m =================================================================== --- trunk/PDFView_SKExtensions.m 2022-07-16 14:32:14 UTC (rev 13026) +++ trunk/PDFView_SKExtensions.m 2022-07-16 17:27:19 UTC (rev 13027) @@ -319,4 +319,19 @@ return defaultBackgroundColor(SKFullScreenBackgroundColorKey, SKDarkFullScreenBackgroundColorKey); } +- (BOOL)accessibilityPerformShowMenu { + NSPoint point = SKCenterPoint([self visibleContentRect]); + NSEvent *event = [NSEvent mouseEventWithType:NSRightMouseDown + location:[self convertPoint:point toView:nil] + modifierFlags:0 + timestamp:0 + windowNumber:[[self window] windowNumber] + context:nil + eventNumber:0 + clickCount:1 + pressure:0.0]; + NSMenu *menu = [self menuForEvent:event]; + return [menu popUpMenuPositioningItem:nil atLocation:point inView:self]; +} + @end Modified: trunk/SKSecondaryPDFView.m =================================================================== --- trunk/SKSecondaryPDFView.m 2022-07-16 14:32:14 UTC (rev 13026) +++ trunk/SKSecondaryPDFView.m 2022-07-16 17:27:19 UTC (rev 13027) @@ -308,13 +308,14 @@ } - (void)hideControlView { - if ([controlView superview]) + if ([controlView superview]) { [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){ [[controlView animator] setAlphaValue:0.0]; } completionHandler:^{ [controlView removeFromSuperview]; - NSAccessibilityPostNotificationWithUserInfo(NSAccessibilityUnignoredAncestor([self documentView]), NSAccessibilityLayoutChangedNotification, nil); }]; + NSAccessibilityPostNotificationWithUserInfo(NSAccessibilityUnignoredAncestor([self documentView]), NSAccessibilityLayoutChangedNotification, nil); + } } - (void)mouseEntered:(NSEvent *)theEvent { Modified: trunk/SKSnapshotPDFView.m =================================================================== --- trunk/SKSnapshotPDFView.m 2022-07-16 14:32:14 UTC (rev 13026) +++ trunk/SKSnapshotPDFView.m 2022-07-16 17:27:19 UTC (rev 13027) @@ -212,13 +212,14 @@ - (void)hideControlView { transientControlView = NO; - if ([controlView superview]) + if ([controlView superview]) { [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){ [[controlView animator] setAlphaValue:0.0]; } completionHandler:^{ [controlView removeFromSuperview]; - NSAccessibilityPostNotificationWithUserInfo(NSAccessibilityUnignoredAncestor([self documentView]), NSAccessibilityLayoutChangedNotification, nil); }]; + NSAccessibilityPostNotificationWithUserInfo(NSAccessibilityUnignoredAncestor([self documentView]), NSAccessibilityLayoutChangedNotification, nil); + } } - (void)mouseEntered:(NSEvent *)theEvent { 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