From c1a70a3aa2f61a1949a6a00f9d0fafbb293333d4 Mon Sep 17 00:00:00 2001 From: Ross Boucher Date: Sat, 6 Mar 2010 01:07:46 -0800 Subject: [PATCH] Closes #528. Update CPScrollView to use more modern key command parsing. --- AppKit/CPResponder.j | 6 ++++ AppKit/CPScrollView.j | 70 ++++++++++++++++++++++++------------------- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/AppKit/CPResponder.j b/AppKit/CPResponder.j index 99c9b0ab5..92a6dff9b 100644 --- a/AppKit/CPResponder.j +++ b/AppKit/CPResponder.j @@ -28,6 +28,8 @@ CPTabKeyCode = 9; CPReturnKeyCode = 13; CPEscapeKeyCode = 27; CPSpaceKeyCode = 32; +CPPageUpKeyCode = 33; +CPPageDownKeyCode = 34; CPLeftArrowKeyCode = 37; CPUpArrowKeyCode = 38; CPRightArrowKeyCode = 39; @@ -106,6 +108,10 @@ CPDownArrowKeyCode = 40; switch([event keyCode]) { + case CPPageUpKeyCode: [self doCommandBySelector:@selector(pageUp:)]; + break; + case CPPageDownKeyCode: [self doCommandBySelector:@selector(pageDown:)]; + break; case CPLeftArrowKeyCode: [self doCommandBySelector:@selector(moveLeft:)]; break; case CPRightArrowKeyCode: [self doCommandBySelector:@selector(moveRight:)]; diff --git a/AppKit/CPScrollView.j b/AppKit/CPScrollView.j index 6406c96fb..82badfea4 100644 --- a/AppKit/CPScrollView.j +++ b/AppKit/CPScrollView.j @@ -683,38 +683,48 @@ - (void)keyDown:(CPEvent)anEvent { - var keyCode = [anEvent keyCode], - documentFrame = [[self documentView] frame], + [self interpretKeyEvents:[anEvent]]; +} + +- (void)pageUp:(id)sender +{ + var contentBounds = [_contentView bounds]; + [self moveByOffset:CGSizeMake(0.0, -(_CGRectGetHeight(contentBounds) - _verticalPageScroll))]; +} + +- (void)pageDown:(id)sender +{ + var contentBounds = [_contentView bounds]; + [self moveByOffset:CGSizeMake(0.0, _CGRectGetHeight(contentBounds) - _verticalPageScroll)]; +} + +- (void)moveLeft:(id)sender +{ + [self moveByOffset:CGSizeMake(-_horizontalLineScroll, 0.0)]; +} + +- (void)moveRight:(id)sender +{ + [self moveByOffset:CGSizeMake(_horizontalLineScroll, 0.0)]; +} + +- (void)moveUp:(id)sender +{ + [self moveByOffset:CGSizeMake(0.0, -_verticalLineScroll)]; +} + +- (void)moveDown:(id)sender +{ + [self moveByOffset:CGSizeMake(0.0, _verticalLineScroll)]; +} + +- (void)moveByOffset:(CGSize)aSize +{ + var documentFrame = [[self documentView] frame], contentBounds = [_contentView bounds]; - - switch (keyCode) - { - case 33: /*pageup*/ - contentBounds.origin.y -= _CGRectGetHeight(contentBounds) - _verticalPageScroll; - break; - - case 34: /*pagedown*/ - contentBounds.origin.y += _CGRectGetHeight(contentBounds) - _verticalPageScroll; - break; - - case 38: /*up arrow*/ - contentBounds.origin.y -= _verticalLineScroll; - break; - case 40: /*down arrow*/ - contentBounds.origin.y += _verticalLineScroll; - break; - - case 37: /*left arrow*/ - contentBounds.origin.x -= _horizontalLineScroll; - break; - - case 49: /*right arrow*/ - contentBounds.origin.x += _horizontalLineScroll; - break; - - default: return [super keyDown:anEvent]; - } + contentBounds.origin.x += aSize.width; + contentBounds.origin.y += aSize.height; [_contentView scrollToPoint:contentBounds.origin]; [_headerClipView scrollToPoint:CGPointMake(contentBounds.origin, 0)];