Changeset 41793 in webkit
- Timestamp:
- Mar 17, 2009, 5:06:25 PM (16 years ago)
- Location:
- trunk/WebKit/mac
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit/mac/ChangeLog
r41787 r41793 1 2009-03-17 Darin Adler <darin@apple.com> 2 3 Reviewed by Adele Peterson. 4 5 Bug 24477: REGRESSION (r41467): Page Down key scrolls two pages 6 https://bugs.webkit.org/show_bug.cgi?id=24477 7 rdar://problem/6674184 8 9 * WebView/WebHTMLView.mm: 10 (responderChainRespondsToSelector): Added. 11 (-[WebHTMLView doCommandBySelector:]): Set eventWasHandled based on whether we 12 can find a responder that responds to this selector rather than always assuming 13 the selector will not be handled. 14 1 15 2009-03-17 Mark Rowe <mrowe@apple.com> 2 16 -
trunk/WebKit/mac/WebView/WebHTMLView.mm
r41712 r41793 5370 5370 } 5371 5371 5372 static bool responderChainRespondsToSelector(NSResponder *firstResponder, SEL selector) 5373 { 5374 for (NSResponder *responder = firstResponder; responder; responder = [responder nextResponder]) { 5375 if ([responder respondsToSelector:selector]) 5376 return true; 5377 } 5378 return false; 5379 } 5380 5372 5381 - (void)doCommandBySelector:(SEL)selector 5373 5382 { … … 5403 5412 eventWasHandled = command.execute(event); 5404 5413 else { 5414 // If WebKit does not support this command, we need to pass the selector to super. 5405 5415 _private->selectorForDoCommandBySelector = selector; 5406 // If WebKit does not support this command, we need to pass the selector to super. 5416 // We'll get the wrong value for eventWasHandled if respondsToSelector: doesn't 5417 // exactly reflect what doCommandBySelector: does, for example an unusual class might 5418 // not even pass the selector along to the next responder, or might handle a selector 5419 // even though respondsToSelector: return NO. When that happens, there's a risk the 5420 // event might end up handled twice. We know of no real-world examples of this. 5421 eventWasHandled = responderChainRespondsToSelector(self, selector); 5407 5422 [super doCommandBySelector:selector]; 5408 5423 _private->selectorForDoCommandBySelector = 0; 5409 // In theory, [super doCommandBySelector:] can do some action that would cause WebKit5410 // to need to consider the event handled. But in practice, I've found no5411 // example of that happening and causing broken behavior.5412 eventWasHandled = false;5413 5424 } 5414 5425 }
Note:
See TracChangeset
for help on using the changeset viewer.