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

Reply via email to