Revision: 27723
          http://sourceforge.net/p/bibdesk/svn/27723
Author:   hofman
Date:     2022-07-12 17:13:39 +0000 (Tue, 12 Jul 2022)
Log Message:
-----------
file view accessibility as grid. Add actions to icons for increment and 
decrement.

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

Modified: trunk/bibdesk_vendorsrc/amaxwell/FileView/FVAccessibilityIconElement.h
===================================================================
--- trunk/bibdesk_vendorsrc/amaxwell/FileView/FVAccessibilityIconElement.h      
2022-07-12 08:10:43 UTC (rev 27722)
+++ trunk/bibdesk_vendorsrc/amaxwell/FileView/FVAccessibilityIconElement.h      
2022-07-12 17:13:39 UTC (rev 27723)
@@ -56,4 +56,6 @@
 - (void)setSelected:(BOOL)selected forIconElement:(FVAccessibilityIconElement 
*)element;
 - (void)openIconElement:(FVAccessibilityIconElement *)element;
 - (void)showMenuForIconElement:(FVAccessibilityIconElement *)element;
+- (void)incrementIconElement:(FVAccessibilityIconElement *)element;
+- (void)decrementIconElement:(FVAccessibilityIconElement *)element;
 @end

Modified: trunk/bibdesk_vendorsrc/amaxwell/FileView/FVAccessibilityIconElement.m
===================================================================
--- trunk/bibdesk_vendorsrc/amaxwell/FileView/FVAccessibilityIconElement.m      
2022-07-12 08:10:43 UTC (rev 27722)
+++ trunk/bibdesk_vendorsrc/amaxwell/FileView/FVAccessibilityIconElement.m      
2022-07-12 17:13:39 UTC (rev 27723)
@@ -154,7 +154,7 @@
 }
 
 - (NSArray *)accessibilityActionNames {
-    return [NSArray arrayWithObjects:NSAccessibilityPressAction, 
NSAccessibilityShowMenuAction, nil];
+    return [NSArray arrayWithObjects:NSAccessibilityPressAction, 
NSAccessibilityShowMenuAction, NSAccessibilityIncrementAction, 
NSAccessibilityDecrementAction, nil];
 }
 
 - (NSString *)accessibilityActionDescription:(NSString *)anAction {
@@ -166,6 +166,10 @@
         [_parent openIconElement:self];
     else if ([anAction isEqualToString:NSAccessibilityShowMenuAction])
         [_parent showMenuForIconElement:self];
+    else if ([anAction isEqualToString:NSAccessibilityIncrementAction])
+        [_parent incrementIconElement:self];
+    else if ([anAction isEqualToString:NSAccessibilityDecrementAction])
+        [_parent decrementIconElement:self];
 }
 
 - (BOOL)isAccessibilityElement {
@@ -241,12 +245,24 @@
     [_parent setSelected:focused forIconElement:self];
 }
 
-- (void)accessibilityPerformPress {
+- (BOOL)accessibilityPerformPress {
     [_parent openIconElement:self];
+    return YES;
 }
 
-- (void)accessibilityPerformShowMenu {
+- (BOOL)accessibilityPerformShowMenu {
     [_parent showMenuForIconElement:self];
+    return YES;
 }
 
+- (BOOL)accessibilityPerformIncrement {
+    [_parent incrementIconElement:self];
+    return YES;
+}
+
+- (BOOL)accessibilityPerformDecrement {
+    [_parent decrementIconElement:self];
+    return YES;
+}
+
 @end

Modified: trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m
===================================================================
--- trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m      2022-07-12 
08:10:43 UTC (rev 27722)
+++ trunk/bibdesk_vendorsrc/amaxwell/FileView/FVFileView.m      2022-07-12 
17:13:39 UTC (rev 27723)
@@ -184,6 +184,13 @@
 - (NSColor *)tertiaryLabelColor;
 @end
 
+enum {
+    NSAccessibilityOrientationUnknown,
+    NSAccessibilityOrientationVertical,
+    NSAccessibilityOrientationHorizontal
+};
+typedef NSInteger NSAccessibilityOrientation;
+
 #endif
 
 #if !defined(MAC_OS_X_VERSION_10_10) || MAC_OS_X_VERSION_MAX_ALLOWED < 
MAC_OS_X_VERSION_10_10
@@ -4545,15 +4552,15 @@
 - (NSArray *)accessibilityAttributeNames {
     static NSArray *attributes = nil;
     if (attributes == nil)
-        attributes = [[[super accessibilityAttributeNames] 
arrayByAddingObjectsFromArray:[NSArray 
arrayWithObjects:NSAccessibilityChildrenAttribute, 
NSAccessibilitySelectedChildrenAttribute, nil]] retain];
+        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 NSAccessibilityGroupRole;
+        return NSAccessibilityGridRole;
     } else if ([attribute 
isEqualToString:NSAccessibilityRoleDescriptionAttribute]) {
-        return NSAccessibilityRoleDescription(NSAccessibilityGroupRole, nil);
+        return NSAccessibilityRoleDescription(NSAccessibilityGridRole, nil);
     } else if ([attribute isEqualToString:NSAccessibilityChildrenAttribute]) {
         NSMutableArray *children = [NSMutableArray array];
         NSUInteger i, count = [self numberOfIcons];
@@ -4568,6 +4575,14 @@
             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];
     }
@@ -4603,11 +4618,11 @@
 }
 
 - (NSString *)accessibilityRole {
-    return NSAccessibilityGroupRole;
+    return NSAccessibilityGridRole;
 }
 
 - (NSString *)accessibilityRoleDescription {
-    return NSAccessibilityRoleDescription(NSAccessibilityGroupRole, nil);
+    return NSAccessibilityRoleDescription(NSAccessibilityGridRole, nil);
 }
 
 - (NSArray *)accessibilityChildren {
@@ -4628,6 +4643,29 @@
     return NSAccessibilityUnignoredChildren(children);
 }
 
+- (void)setAccessibilitySelectedChildren:(NSArray *)elements {
+    NSMutableIndexSet *indexes = [NSMutableIndexSet indexSet];
+    for (FVAccessibilityIconElement *element in elements)
+        [indexes addIndex:[element index]];
+    [self setSelectionIndexes:indexes];
+}
+
+- (NSInteger)accessibilityRowCount {
+    return _numberOfRows;
+}
+
+- (NSInteger)accessibilityColumnCount {
+    return _numberOfColumns;
+}
+
+- (BOOL)isAccessibilityOrderedByRow {
+    return _fvFlags.displayMode != FVDisplayModeColumn;
+}
+
+- (NSAccessibilityOrientation)accessibilityOrientation {
+    return _fvFlags.displayMode == FVDisplayModeRow ? 
NSAccessibilityOrientationHorizontal : NSAccessibilityOrientationVertical;
+}
+
 - (NSURL *)URLForIconElement:(FVAccessibilityIconElement *)element {
     return [self URLAtIndex:[element index]];
 }
@@ -4680,6 +4718,26 @@
     }
 }
 
+- (void)incrementIconElement:(FVAccessibilityIconElement *)element {
+    if ([element index] < [_orderedURLs count]) {
+        FVIcon *anIcon = [self iconAtIndex:[element index]];
+        if ([anIcon currentPageIndex] < [anIcon pageCount]) {
+            [anIcon showNextPage];
+            [self _redisplayIconAfterPageChanged:anIcon];
+        }
+    }
+}
+
+- (void)decrementIconElement:(FVAccessibilityIconElement *)element {
+    if ([element index] < [_orderedURLs count]) {
+        FVIcon *anIcon = [self iconAtIndex:[element index]];
+        if ([anIcon currentPageIndex] > 1) {
+            [anIcon showPreviousPage];
+            [self _redisplayIconAfterPageChanged:anIcon];
+        }
+    }
+}
+
 @end
 
 #pragma mark -

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



_______________________________________________
Bibdesk-commit mailing list
Bibdesk-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to