# HG changeset patch # User Zachary West # Date 1257092119 18000 # Node ID ecda51fe46144657e417dfa69a0d5f3d32a64324 # Parent 28d2f716a225219acfbc961064ed41e1134c085b Prevent infinitely forwarding navigation events. Fixes #13251. diff -r 28d2f716a225219acfbc961064ed41e1134c085b -r ecda51fe46144657e417dfa69a0d5f3d32a64324 Plugins/WebKit Message View/ESWebView.m --- a/Plugins/WebKit Message View/ESWebView.m Sat Oct 31 23:36:14 2009 -0400 +++ b/Plugins/WebKit Message View/ESWebView.m Sun Nov 01 11:15:19 2009 -0500 @@ -93,9 +93,22 @@ //into this view. - (void)keyDown:(NSEvent *)theEvent { + BOOL forwarded = YES; + if (shouldForwardEvents) { - [self forwardSelector:@selector(keyDown:) withObject:theEvent]; - } else { + unichar inChar = [[theEvent charactersIgnoringModifiers] characterAtIndex:0]; + + // Don't forward navigation key events. If we're receiving them, it's because + // the frame itself didn't support them. + if (inChar != NSUpArrowFunctionKey && inChar != NSDownArrowFunctionKey && + inChar != NSPageUpFunctionKey && inChar != NSPageDownFunctionKey) + { + [self forwardSelector:@selector(keyDown:) withObject:theEvent]; + forwarded = YES; + } + } + + if (!forwarded) { [super keyDown:theEvent]; } }