Revision: 27728
          http://sourceforge.net/p/bibdesk/svn/27728
Author:   hofman
Date:     2022-07-13 15:39:12 +0000 (Wed, 13 Jul 2022)
Log Message:
-----------
implement accessibility for color cell as color well

Modified Paths:
--------------
    trunk/bibdesk/BDSKColorCell.m

Modified: trunk/bibdesk/BDSKColorCell.m
===================================================================
--- trunk/bibdesk/BDSKColorCell.m       2022-07-13 14:47:40 UTC (rev 27727)
+++ trunk/bibdesk/BDSKColorCell.m       2022-07-13 15:39:12 UTC (rev 27728)
@@ -40,6 +40,11 @@
 #import "NSGeometry_BDSKExtensions.h"
 #import "NSColor_BDSKExtensions.h"
 
+#if SDK_BEFORE(10_10)
+@interface NSObject (BDSKYosemiteDeclarations)
+- (id)accessibilityValue;
+@end
+#endif
 
 @implementation BDSKColorView
 
@@ -59,4 +64,70 @@
         [color drawSwatchInRect:BDSKShrinkRect(cellFrame, 1.0, [controlView 
isFlipped] ? NSMaxYEdge : NSMinYEdge)];
 }
 
+- (BOOL)isAccessibilityElement {
+    return YES;
+}
+
+- (NSString *)accessibilityRole {
+    return NSAccessibilityColorWellRole;
+}
+
+- (NSString *)accessibilityRoleDescription {
+    return NSAccessibilityRoleDescription(NSAccessibilityColorWellRole, nil);
+}
+
+- (id)accessibilityValue {
+    NSColor *color = [self objectValue];
+    if ([color isKindOfClass:[NSColor class]] == NO)
+        return nil;
+    static NSColorWell *colorWell = nil;
+    if (colorWell == nil)
+        colorWell = [[NSColorWell alloc] init];
+    [colorWell setColor:color];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wpartial-availability"
+    return [colorWell respondsToSelector:@selector(accessibilityValue)] ? 
[colorWell accessibilityValue] : [colorWell 
accessibilityAttributeValue:NSAccessibilityValueAttribute];
+#pragma clang diagnostic pop
+}
+
+- (BOOL)isAccessibilityEnabled {
+    return NO;
+}
+
+- (BOOL)accessibilityIsIgnored {
+    return NO;
+}
+
+- (NSArray *)accessibilityAttributeNames {
+    static NSArray *attributes = nil;
+    if (attributes == nil) {
+        attributes = [[NSArray alloc] initWithObjects:
+            NSAccessibilityRoleAttribute,
+            NSAccessibilityRoleDescriptionAttribute,
+            NSAccessibilityValueAttribute,
+            NSAccessibilityParentAttribute,
+            NSAccessibilityWindowAttribute,
+            NSAccessibilityTopLevelUIElementAttribute,
+            NSAccessibilityPositionAttribute,
+            NSAccessibilitySizeAttribute,
+            NSAccessibilityEnabledAttribute,
+            nil];
+    }
+    return attributes;
+}
+
+- (id)accessibilityAttributeValue:(NSString *)attribute {
+    if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) {
+        return NSAccessibilityColorWellRole;
+    } else if ([attribute 
isEqualToString:NSAccessibilityRoleDescriptionAttribute]) {
+        return NSAccessibilityRoleDescription(NSAccessibilityColorWellRole, 
nil);
+    } else if ([attribute isEqualToString:NSAccessibilityValueAttribute]) {
+        return [self accessibilityValue];
+    } else if ([attribute isEqualToString:NSAccessibilityEnabledAttribute]) {
+        return [NSNumber numberWithBool:NO];
+    } else {
+        return [super accessibilityAttributeValue:attribute];
+    }
+}
+
 @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