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