Revision: 3841
http://skim-app.svn.sourceforge.net/skim-app/?rev=3841&view=rev
Author: hofman
Date: 2008-05-03 05:05:55 -0700 (Sat, 03 May 2008)
Log Message:
-----------
Add accessibility for status bar.
Modified Paths:
--------------
trunk/SKStatusBar.m
Modified: trunk/SKStatusBar.m
===================================================================
--- trunk/SKStatusBar.m 2008-05-02 21:13:19 UTC (rev 3840)
+++ trunk/SKStatusBar.m 2008-05-03 12:05:55 UTC (rev 3841)
@@ -64,7 +64,7 @@
- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
if (self) {
- leftCell = [[NSCell alloc] initTextCell:@""];
+ leftCell = [[NSTextFieldCell alloc] initTextCell:@""];
[leftCell setFont:[NSFont labelFontOfSize:0]];
[leftCell setAlignment:NSLeftTextAlignment];
[leftCell setControlView:self];
@@ -326,4 +326,51 @@
[progressIndicator stopAnimation:sender];
}
+#pragma mark Accessibility
+
+- (NSArray *)accessibilityAttributeNames {
+ return [[super accessibilityAttributeNames]
arrayByAddingObject:NSAccessibilityChildrenAttribute];
+}
+
+- (id)accessibilityAttributeValue:(NSString *)attribute {
+ if ([attribute isEqualToString:NSAccessibilityRoleAttribute])
+ return NSAccessibilityGroupRole;
+ else if ([attribute
isEqualToString:NSAccessibilityRoleDescriptionAttribute])
+ return NSAccessibilityRoleDescription(NSAccessibilityGroupRole, nil);
+ else if ([attribute isEqualToString:NSAccessibilityChildrenAttribute])
+ return NSAccessibilityUnignoredChildren([NSArray
arrayWithObjects:leftCell, rightCell, progressIndicator, nil]);
+ return [super accessibilityAttributeValue:attribute];
+}
+
+- (id)accessibilityHitTest:(NSPoint)point {
+ NSPoint localPoint = [self convertPoint:[[self window]
convertScreenToBase:point] fromView:nil];
+ NSRect rect, childRect, ignored;
+ NSDivideRect([self bounds], &ignored, &rect, LEFT_MARGIN, NSMinXEdge);
+ NSDivideRect(rect, &ignored, &rect, RIGHT_MARGIN, NSMaxXEdge);
+ if (progressIndicator) {
+ NSDivideRect(rect, &childRect, &rect, NSWidth([progressIndicator
frame]), NSMaxXEdge);
+ if (NSPointInRect(localPoint, childRect))
+ return NSAccessibilityUnignoredAncestor(progressIndicator);
+ NSDivideRect(rect, &ignored, &rect, SEPARATION, NSMaxXEdge);
+ }
+ NSDivideRect(rect, &childRect, &rect, MIN(NSWidth(rect), [rightCell
cellSize].width), NSMaxXEdge);
+ if (NSPointInRect(localPoint, childRect))
+ return NSAccessibilityUnignoredAncestor(rightCell);
+ else
+ return NSAccessibilityUnignoredAncestor(leftCell);
+}
+
+- (id)accessibilityFocusedUIElement {
+ if ([NSApp accessibilityFocusedUIElement] == rightCell)
+ return NSAccessibilityUnignoredAncestor(rightCell);
+ else if (progressIndicator && [NSApp accessibilityFocusedUIElement] ==
progressIndicator)
+ return NSAccessibilityUnignoredAncestor(progressIndicator);
+ else
+ return NSAccessibilityUnignoredAncestor(leftCell);
+}
+
+- (BOOL)accessibilityIsIgnored {
+ return NO;
+}
+
@end
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit