| Update of /cvsroot/zephyrchat/zchat/zChat
In directory sc8-pr-cvs1:/tmp/cvs-serv3126
Modified Files:
	AKActionScrollView.m AKStackedView.m ZChatFriendsController.mm 
Log Message:
First crack at making friends view respond to key events.
Index: AKActionScrollView.m
===================================================================
RCS file: /cvsroot/zephyrchat/zchat/zChat/AKActionScrollView.m,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- AKActionScrollView.m	19 Mar 2003 02:46:10 -0000	1.1
+++ AKActionScrollView.m	1 Apr 2003 17:41:00 -0000	1.2
@@ -3,7 +3,12 @@
 @implementation AKActionScrollView
 
 - (void)mouseDown:(NSEvent *)event {
+    [[self window] makeFirstResponder:self];
     [_delegate scrollView:self mouseDown:event];
+}
+
+- (BOOL)acceptsFirstResponder {
+    return YES;
 }
 
 @end
Index: AKStackedView.m
===================================================================
RCS file: /cvsroot/zephyrchat/zchat/zChat/AKStackedView.m,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- AKStackedView.m	29 Mar 2003 19:21:37 -0000	1.5
+++ AKStackedView.m	1 Apr 2003 17:41:00 -0000	1.6
@@ -54,7 +54,13 @@
     [[self superview] displayIfNeeded];
 }
 
+- (BOOL)acceptsFirstResponder {
+    return YES;
+}
+
 - (void)mouseDown:(NSEvent *)event {
+    [[self window] makeFirstResponder:self];
+
     if (_delegate != nil) {
         if ([_delegate selectViewIsSelected:self] && [event modifierFlags] & NSCommandKeyMask) {
             [_delegate selectView:self setSelected:NO];
Index: ZChatFriendsController.mm
===================================================================
RCS file: /cvsroot/zephyrchat/zchat/zChat/ZChatFriendsController.mm,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- ZChatFriendsController.mm	31 Mar 2003 17:07:22 -0000	1.18
+++ ZChatFriendsController.mm	1 Apr 2003 17:41:00 -0000	1.19
@@ -149,6 +149,76 @@
     [_data makeObjectsPerformSelector:@selector(deselect)];
 }
 
+- (void)_moveDownDeselectOthers:(BOOL)deselect {
+    unsigned next = NSNotFound;
+    for (unsigned i = 0; i < [_data count]; ++i) {
+        if ([[_data objectAtIndex:i] selected])
+            next = i + 1;
+    }
+
+    if (next == NSNotFound) next = 0;
+    if (next >= [_data count]) next = [_data count] - 1;
+
+    if (next != NSNotFound) {
+        if (deselect) {
+            [[self selectedFriends] makeObjectsPerformSelector:@selector(deselect)];
+        }
+        [[_data objectAtIndex:next] select];
+    }
+}
+
+- (void)moveDown:(id)sender {
+    [self _moveDownDeselectOthers:YES];
+}
+
+- (void)moveDownAndModifySelection:(id)sender {
+    [self _moveDownDeselectOthers:NO];
+}
+
+- (void)_moveUpDeselectOthers:(BOOL)deselect {
+    unsigned i;
+    for (i = 0; i < [_data count]; ++i) {
+        if ([[_data objectAtIndex:i] selected]) {
+            break;
+        }
+    }
+
+    if (i > 0) --i;
+    
+    if ([_data count] > 0) {
+        if (deselect) {
+            [[self selectedFriends] makeObjectsPerformSelector:@selector(deselect)];
+        }
+        [[_data objectAtIndex:i] select];
+    }
+}
+
+- (void)moveUp:(id)sender {
+    [self _moveUpDeselectOthers:YES];
+}
+
+- (void)moveUpAndModifySelection:(id)sender {
+    [self _moveUpDeselectOthers:NO];
+}
+
+- (void)moveToBeginningOfLine:(id)sender {
+    if ([_data count] > 0) {
+        [[self selectedFriends] makeObjectsPerformSelector:@selector(deselect)];
+        [[_data objectAtIndex:0] select];
+    }
+}
+
+- (void)moveToEndOfLine:(id)sender {
+    if ([_data count] > 0) {
+        [[self selectedFriends] makeObjectsPerformSelector:@selector(deselect)];
+        [[_data objectAtIndex:[_data count] - 1] select];
+    }
+}
+
+- (void)deleteBackward:(id)sender {
+    [self delete:sender];
+}
+
 - (void)windowDidBecomeKey:(NSNotification *)notification {
     [_friendView setNeedsDisplay:YES];
 }
 |