Revision: 13018 http://sourceforge.net/p/skim-app/code/13018 Author: hofman Date: 2022-07-13 17:08:30 +0000 (Wed, 13 Jul 2022) Log Message: ----------- make colors menu view accessible
Modified Paths: -------------- trunk/SKColorMenuView.h trunk/SKColorMenuView.m Modified: trunk/SKColorMenuView.h =================================================================== --- trunk/SKColorMenuView.h 2022-07-12 09:46:33 UTC (rev 13017) +++ trunk/SKColorMenuView.h 2022-07-13 17:08:30 UTC (rev 13018) @@ -37,10 +37,11 @@ */ #import <Cocoa/Cocoa.h> +#import "SKGroupView.h" @class PDFAnnotation; -@interface SKColorMenuView : NSView { +@interface SKColorMenuView : SKGroupView { PDFAnnotation *annotation; NSArray *colors; NSUInteger hoveredIndex; Modified: trunk/SKColorMenuView.m =================================================================== --- trunk/SKColorMenuView.m 2022-07-12 09:46:33 UTC (rev 13017) +++ trunk/SKColorMenuView.m 2022-07-13 17:08:30 UTC (rev 13018) @@ -41,7 +41,11 @@ #import "NSColor_SKExtensions.h" #import "NSEvent_SKExtensions.h" #import "PDFAnnotation_SKExtensions.h" +#import "NSView_SKExtensions.h" +@interface SKAccessibilityColorElement : NSAccessibilityElement +@end + @interface SKColorMenuView (SKPrivate) - (void)setup; @end @@ -163,4 +167,47 @@ } } +- (NSString *)accessibilityLabel { + return NSLocalizedString(@"colors", @"accessibility description"); +} + +- (NSArray *)accessibilityChildren { + NSArray *children = [super accessibilityChildren]; + if ([children count] == 0) { + NSMutableArray *array = [NSMutableArray array]; + [colors enumerateObjectsUsingBlock:^(id color, NSUInteger i, BOOL *stop){ + NSRect rect = [self rectAtIndex:i]; + SKAccessibilityColorElement *element = [SKAccessibilityColorElement accessibilityElementWithRole:NSAccessibilityColorWellRole frame:[self convertRectToScreen:rect] label:[color accessibilityValue] parent:self]; + [element setAccessibilityFrameInParentSpace:rect]; + [array addObject:element]; + }]; + [self setAccessibilityChildren:array]; + children = array; + } + return children; +} + +- (BOOL)pressAccssibilityColorElement:(SKAccessibilityColorElement *)element { + NSUInteger idx = [[self accessibilityChildren] indexOfObject:element]; + if (idx == NSNotFound) + return NO; + [annotation setColor:[colors objectAtIndex:idx] alternate:NO updateDefaults:NO]; + [[[self enclosingMenuItem] menu] cancelTracking]; + return YES; +} + @end + +@implementation SKAccessibilityColorElement + +- (id)accessibilityValue { + return [self accessibilityLabel]; +} + +- (BOOL)accessibilityPerformPress { + id parent = [self accessibilityParent]; + return [parent respondsToSelector:@selector(pressAccssibilityColorElement:)] && [parent pressAccssibilityColorElement:self]; +} + +@end + 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