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

Reply via email to