Revision: 27741
          http://sourceforge.net/p/bibdesk/svn/27741
Author:   hofman
Date:     2022-07-18 18:48:39 +0000 (Mon, 18 Jul 2022)
Log Message:
-----------
Implement transient UI accessibility condtionally on SDK. Implement showMenu 
action to use the center point.

Modified Paths:
--------------
    trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m
    trunk/bibdesk_vendorsrc/amaxwell/FileView/FVSlider.m

Modified: trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m
===================================================================
--- trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m      2022-07-18 
18:06:58 UTC (rev 27740)
+++ trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m      2022-07-18 
18:48:39 UTC (rev 27741)
@@ -3214,8 +3214,10 @@
             
             [_sliderWindow fadeIn:self];
             [[self window] addChildWindow:_sliderWindow ordered:NSWindowAbove];
+#if defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MAX_ALLOWED >= 
MAC_OS_X_VERSION_10_9
             if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_8)
                 
NSAccessibilityPostNotificationWithUserInfo(NSAccessibilityUnignoredAncestor(self),
 NSAccessibilityLayoutChangedNotification, [NSDictionary 
dictionaryWithObjectsAndKeys:NSAccessibilityUnignoredChildren([NSArray 
arrayWithObjects:_sliderWindow, nil]), NSAccessibilityUIElementsKey, nil]);
+#endif
         }
     }
     
@@ -4550,70 +4552,6 @@
 
 #pragma mark Accessibility
 
-- (NSArray *)accessibilityAttributeNames {
-    static NSArray *attributes = nil;
-    if (attributes == nil)
-        attributes = [[[super accessibilityAttributeNames] 
arrayByAddingObjectsFromArray:[NSArray 
arrayWithObjects:NSAccessibilityChildrenAttribute, 
NSAccessibilitySelectedChildrenAttribute, NSAccessibilityRowCountAttribute, 
NSAccessibilityColumnCountAttribute, NSAccessibilityOrientationAttribute, 
NSAccessibilityOrderedByRowAttribute, nil]] retain];
-    return attributes;
-}
-
-- (id)accessibilityAttributeValue:(NSString *)attribute {
-    if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) {
-        return NSAccessibilityGridRole;
-    } else if ([attribute 
isEqualToString:NSAccessibilityRoleDescriptionAttribute]) {
-        return NSAccessibilityRoleDescription(NSAccessibilityGridRole, nil);
-    } else if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) {
-        NSMutableArray *children = [NSMutableArray array];
-        NSUInteger i, count = [self numberOfIcons];
-        for (i = 0; i < count; i++)
-            [children addObject:[FVAccessibilityIconElement elementWithIndex:i 
parent:self]];
-        return NSAccessibilityUnignoredChildren(children);
-    } else if ([attribute 
isEqualToString:NSAccessibilitySelectedChildrenAttribute]) {
-        NSMutableArray *children = [NSMutableArray array];
-        NSUInteger i = [_selectionIndexes firstIndex];
-        while (i != NSNotFound) {
-            [children addObject:[FVAccessibilityIconElement elementWithIndex:i 
parent:self]];
-            i = [_selectionIndexes indexGreaterThanIndex:i];
-        }
-        return NSAccessibilityUnignoredChildren(children);
-    } else if ([attribute isEqualToString:NSAccessibilityRowCountAttribute]) {
-        return [NSNumber numberWithInteger:_numberOfRows];
-    } else if ([attribute 
isEqualToString:NSAccessibilityColumnCountAttribute]) {
-        return [NSNumber numberWithInteger:_numberOfColumns];
-    } else if ([attribute 
isEqualToString:NSAccessibilityOrientationAttribute]) {
-        return _fvFlags.displayMode == FVDisplayModeRow ? 
NSAccessibilityHorizontalOrientationValue : 
NSAccessibilityVerticalOrientationValue;
-    } else if ([attribute 
isEqualToString:NSAccessibilityOrderedByRowAttribute]) {
-        return [NSNumber numberWithBool:_fvFlags.displayMode != 
FVDisplayModeColumn];
-    } else {
-        return [super accessibilityAttributeValue:attribute];
-    }
-}
-
-- (BOOL)accessibilityIsIgnored {
-    return NO;
-}
-
-- (id)accessibilityHitTest:(NSPoint)point {
-    NSPoint localPoint;
-#if defined(MAC_OS_X_VERSION_10_7) && MAC_OS_X_VERSION_MIN_REQUIRED >= 
MAC_OS_X_VERSION_10_7
-    localPoint = [self convertPoint:[[self window] 
convertRectFromScreen:(NSRect){point, NSZeroSize}].origin fromView:nil];
-#else
-    localPoint = [self convertPoint:[[self window] convertScreenToBase:point] 
fromView:nil];
-#endif
-    NSUInteger i = [self _indexAtPoint:localPoint dropOperation:NULL];
-    if (i != NSNotFound)
-        return [[FVAccessibilityIconElement elementWithIndex:i parent:self] 
accessibilityHitTest:point];
-    return NSAccessibilityUnignoredAncestor(self);
-}
-
-- (id)accessibilityFocusedUIElement {
-    NSUInteger i = [_selectionIndexes firstIndex];
-    if (i != NSNotFound)
-        return [[FVAccessibilityIconElement elementWithIndex:i parent:self] 
accessibilityFocusedUIElement];
-    else
-        return NSAccessibilityUnignoredAncestor(self);
-}
-
 - (BOOL)isAccessibilityElement {
     return YES;
 }
@@ -4670,6 +4608,8 @@
 }
 #pragma clang diagnostic pop
 
+#if defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MAX_ALLOWED >= 
MAC_OS_X_VERSION_10_9
+
 - (BOOL)isAccessibilityAlternateUIVisible {
     return [_sliderWindow parentWindow] != nil;
 }
@@ -4698,6 +4638,104 @@
     return YES;
 }
 
+#endif
+
+- (BOOL)accessibilityPerformShowMenu {
+    NSRect rect = [self visibleRect];
+    NSPoint p = NSMakePoint(NSMidX(rect), NSMidY(rect));
+    NSUInteger i = [self _indexAtPoint:p dropOperation:NULL];
+    [[self menuForIconAtIndex:i] popUpMenuPositioningItem:nil atLocation:p 
inView:self];
+    return YES;
+}
+
+- (NSArray *)accessibilityAttributeNames {
+    static NSArray *attributes = nil;
+    if (attributes == nil)
+        attributes = [[[super accessibilityAttributeNames] 
arrayByAddingObjectsFromArray:[NSArray 
arrayWithObjects:NSAccessibilityChildrenAttribute, 
NSAccessibilitySelectedChildrenAttribute, NSAccessibilityRowCountAttribute, 
NSAccessibilityColumnCountAttribute, NSAccessibilityOrientationAttribute, 
NSAccessibilityOrderedByRowAttribute, nil]] retain];
+    return attributes;
+}
+
+- (id)accessibilityAttributeValue:(NSString *)attribute {
+    if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) {
+        return NSAccessibilityGridRole;
+    } else if ([attribute 
isEqualToString:NSAccessibilityRoleDescriptionAttribute]) {
+        return NSAccessibilityRoleDescription(NSAccessibilityGridRole, nil);
+    } else if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) {
+        NSMutableArray *children = [NSMutableArray array];
+        NSUInteger i, count = [self numberOfIcons];
+        for (i = 0; i < count; i++)
+            [children addObject:[FVAccessibilityIconElement elementWithIndex:i 
parent:self]];
+        return NSAccessibilityUnignoredChildren(children);
+    } else if ([attribute 
isEqualToString:NSAccessibilitySelectedChildrenAttribute]) {
+        NSMutableArray *children = [NSMutableArray array];
+        NSUInteger i = [_selectionIndexes firstIndex];
+        while (i != NSNotFound) {
+            [children addObject:[FVAccessibilityIconElement elementWithIndex:i 
parent:self]];
+            i = [_selectionIndexes indexGreaterThanIndex:i];
+        }
+        return NSAccessibilityUnignoredChildren(children);
+    } else if ([attribute isEqualToString:NSAccessibilityRowCountAttribute]) {
+        return [NSNumber numberWithInteger:_numberOfRows];
+    } else if ([attribute 
isEqualToString:NSAccessibilityColumnCountAttribute]) {
+        return [NSNumber numberWithInteger:_numberOfColumns];
+    } else if ([attribute 
isEqualToString:NSAccessibilityOrientationAttribute]) {
+        return _fvFlags.displayMode == FVDisplayModeRow ? 
NSAccessibilityHorizontalOrientationValue : 
NSAccessibilityVerticalOrientationValue;
+    } else if ([attribute 
isEqualToString:NSAccessibilityOrderedByRowAttribute]) {
+        return [NSNumber numberWithBool:_fvFlags.displayMode != 
FVDisplayModeColumn];
+    } else {
+        return [super accessibilityAttributeValue:attribute];
+    }
+}
+
+- (NSArray *)accessibilityActionNames {
+#if defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MAX_ALLOWED >= 
MAC_OS_X_VERSION_10_9
+    if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_8)
+        return [NSArray arrayWithObjects:NSAccessibilityShowMenuAction, 
NSAccessibilityShowAlternateUIAction, NSAccessibilityShowDefaultUIAction, nil];
+    else
+#endif
+        return [NSArray arrayWithObjects:NSAccessibilityShowMenuAction, nil];
+}
+
+- (NSString *)accessibilityActionDescription:(NSString *)anAction {
+    return NSAccessibilityActionDescription(anAction);
+}
+
+- (void)accessibilityPerformAction:(NSString *)anAction {
+    if ([anAction isEqualToString:NSAccessibilityShowMenuAction])
+        [self accessibilityPerformShowMenu];
+#if defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MAX_ALLOWED >= 
MAC_OS_X_VERSION_10_9
+    else if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_8 && 
[anAction isEqualToString:NSAccessibilityShowAlternateUIAction])
+        [self accessibilityPerformShowAlternateUI];
+    else if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_8 && 
[anAction isEqualToString:NSAccessibilityShowDefaultUIAction])
+        [self accessibilityPerformShowDefaultUI];
+#endif
+}
+
+- (BOOL)accessibilityIsIgnored {
+    return NO;
+}
+
+- (id)accessibilityHitTest:(NSPoint)point {
+    NSPoint localPoint;
+#if defined(MAC_OS_X_VERSION_10_7) && MAC_OS_X_VERSION_MIN_REQUIRED >= 
MAC_OS_X_VERSION_10_7
+    localPoint = [self convertPoint:[[self window] 
convertRectFromScreen:(NSRect){point, NSZeroSize}].origin fromView:nil];
+#else
+    localPoint = [self convertPoint:[[self window] convertScreenToBase:point] 
fromView:nil];
+#endif
+    NSUInteger i = [self _indexAtPoint:localPoint dropOperation:NULL];
+    if (i != NSNotFound)
+        return [[FVAccessibilityIconElement elementWithIndex:i parent:self] 
accessibilityHitTest:point];
+    return NSAccessibilityUnignoredAncestor(self);
+}
+
+- (id)accessibilityFocusedUIElement {
+    NSUInteger i = [_selectionIndexes firstIndex];
+    if (i != NSNotFound)
+        return [[FVAccessibilityIconElement elementWithIndex:i parent:self] 
accessibilityFocusedUIElement];
+    else
+        return NSAccessibilityUnignoredAncestor(self);
+}
+
 - (NSURL *)URLForIconElement:(FVAccessibilityIconElement *)element {
     return [self URLAtIndex:[element index]];
 }

Modified: trunk/bibdesk_vendorsrc/amaxwell/FileView/FVSlider.m
===================================================================
--- trunk/bibdesk_vendorsrc/amaxwell/FileView/FVSlider.m        2022-07-18 
18:06:58 UTC (rev 27740)
+++ trunk/bibdesk_vendorsrc/amaxwell/FileView/FVSlider.m        2022-07-18 
18:48:39 UTC (rev 27741)
@@ -196,8 +196,10 @@
     id view = NSAccessibilityUnignoredAncestor([_slider target]);
     [[self parentWindow] removeChildWindow:self];
     [super orderOut:self];
+#if defined(MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MAX_ALLOWED >= 
MAC_OS_X_VERSION_10_9
     if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_8 && view)
         NSAccessibilityPostNotificationWithUserInfo(view, 
NSAccessibilityLayoutChangedNotification, nil);
+#endif
 }
 
 @end

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to