Changeset 95465 in webkit
- Timestamp:
- Sep 19, 2011 1:27:42 PM (13 years ago)
- Location:
- trunk/Source/WebKit/mac
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/mac/ChangeLog
r95459 r95465 1 2011-09-19 Anders Carlsson <andersca@apple.com> 2 3 Begin removing -[WebView _usesDocumentCalls] from WebView.mm 4 https://bugs.webkit.org/show_bug.cgi?id=68383 5 6 Reviewed by Adam Roben. 7 8 Remove checks and begin assuming that -[WebView _usesDocumentViews] always 9 returns true, since viewless WebKit1 has been abandoned. 10 11 * WebView/WebView.mm: 12 (-[WebView selectedFrame]): 13 (-[WebView setHostWindow:]): 14 (-[WebView acceptsFirstResponder]): 15 (-[WebView becomeFirstResponder]): 16 (-[WebView _webcore_effectiveFirstResponder]): 17 (-[WebView setNextKeyView:]): 18 (-[WebView setHoverFeedbackSuspended:]): 19 1 20 2011-09-19 Anders Carlsson <andersca@apple.com> 2 21 -
trunk/Source/WebKit/mac/WebView/WebView.mm
r95271 r95465 3532 3532 - (WebFrame *)selectedFrame 3533 3533 { 3534 if (_private->usesDocumentViews) { 3535 // If the first responder is a view in our tree, we get the frame containing the first responder. 3536 // This is faster than searching the frame hierarchy, and will give us a result even in the case 3537 // where the focused frame doesn't actually contain a selection. 3538 WebFrame *focusedFrame = [self _focusedFrame]; 3539 if (focusedFrame) 3540 return focusedFrame; 3541 } 3534 // If the first responder is a view in our tree, we get the frame containing the first responder. 3535 // This is faster than searching the frame hierarchy, and will give us a result even in the case 3536 // where the focused frame doesn't actually contain a selection. 3537 WebFrame *focusedFrame = [self _focusedFrame]; 3538 if (focusedFrame) 3539 return focusedFrame; 3542 3540 3543 3541 // If the first responder is outside of our view tree, we search for a frame containing a selection. … … 3825 3823 3826 3824 Frame* coreFrame = [self _mainCoreFrame]; 3827 if (_private->usesDocumentViews) { 3828 for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) 3829 [[[kit(frame) frameView] documentView] viewWillMoveToHostWindow:hostWindow]; 3830 } 3825 for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) 3826 [[[kit(frame) frameView] documentView] viewWillMoveToHostWindow:hostWindow]; 3831 3827 if (_private->hostWindow && [self window] != _private->hostWindow) 3832 3828 [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowWillCloseNotification object:_private->hostWindow]; … … 3835 3831 [_private->hostWindow release]; 3836 3832 _private->hostWindow = [hostWindow retain]; 3837 if (_private->usesDocumentViews) { 3838 for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) 3839 [[[kit(frame) frameView] documentView] viewDidMoveToHostWindow]; 3840 } 3833 for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) 3834 [[[kit(frame) frameView] documentView] viewDidMoveToHostWindow]; 3841 3835 } 3842 3836 … … 3959 3953 - (BOOL)acceptsFirstResponder 3960 3954 { 3961 if (_private->usesDocumentViews) 3962 return [[[self mainFrame] frameView] acceptsFirstResponder]; 3963 3964 // FIXME (Viewless): Need more code from WebHTMLView here. 3965 return YES; 3955 return [[[self mainFrame] frameView] acceptsFirstResponder]; 3966 3956 } 3967 3957 3968 3958 - (BOOL)becomeFirstResponder 3969 3959 { 3970 if (_private->usesDocumentViews) { 3971 if (_private->becomingFirstResponder) { 3972 // Fix for unrepro infinite recursion reported in Radar 4448181. If we hit this assert on 3973 // a debug build, we should figure out what causes the problem and do a better fix. 3974 ASSERT_NOT_REACHED(); 3975 return NO; 3976 } 3977 3978 // This works together with setNextKeyView to splice the WebView into 3979 // the key loop similar to the way NSScrollView does this. Note that 3980 // WebFrameView has very similar code. 3981 NSWindow *window = [self window]; 3982 WebFrameView *mainFrameView = [[self mainFrame] frameView]; 3983 3984 NSResponder *previousFirstResponder = [[self window] _oldFirstResponderBeforeBecoming]; 3985 BOOL fromOutside = ![previousFirstResponder isKindOfClass:[NSView class]] || (![(NSView *)previousFirstResponder isDescendantOf:self] && previousFirstResponder != self); 3986 3987 if ([window keyViewSelectionDirection] == NSSelectingPrevious) { 3988 NSView *previousValidKeyView = [self previousValidKeyView]; 3989 if (previousValidKeyView != self && previousValidKeyView != mainFrameView) { 3990 _private->becomingFirstResponder = YES; 3991 _private->becomingFirstResponderFromOutside = fromOutside; 3992 [window makeFirstResponder:previousValidKeyView]; 3993 _private->becomingFirstResponderFromOutside = NO; 3994 _private->becomingFirstResponder = NO; 3995 return YES; 3996 } 3997 return NO; 3998 } 3999 4000 if ([mainFrameView acceptsFirstResponder]) { 3960 if (_private->becomingFirstResponder) { 3961 // Fix for unrepro infinite recursion reported in Radar 4448181. If we hit this assert on 3962 // a debug build, we should figure out what causes the problem and do a better fix. 3963 ASSERT_NOT_REACHED(); 3964 return NO; 3965 } 3966 3967 // This works together with setNextKeyView to splice the WebView into 3968 // the key loop similar to the way NSScrollView does this. Note that 3969 // WebFrameView has very similar code. 3970 NSWindow *window = [self window]; 3971 WebFrameView *mainFrameView = [[self mainFrame] frameView]; 3972 3973 NSResponder *previousFirstResponder = [[self window] _oldFirstResponderBeforeBecoming]; 3974 BOOL fromOutside = ![previousFirstResponder isKindOfClass:[NSView class]] || (![(NSView *)previousFirstResponder isDescendantOf:self] && previousFirstResponder != self); 3975 3976 if ([window keyViewSelectionDirection] == NSSelectingPrevious) { 3977 NSView *previousValidKeyView = [self previousValidKeyView]; 3978 if (previousValidKeyView != self && previousValidKeyView != mainFrameView) { 4001 3979 _private->becomingFirstResponder = YES; 4002 3980 _private->becomingFirstResponderFromOutside = fromOutside; 4003 [window makeFirstResponder: mainFrameView];3981 [window makeFirstResponder:previousValidKeyView]; 4004 3982 _private->becomingFirstResponderFromOutside = NO; 4005 3983 _private->becomingFirstResponder = NO; 4006 3984 return YES; 4007 } 4008 3985 } 4009 3986 return NO; 4010 3987 } 4011 3988 4012 // FIXME (Viewless): Need more code from WebHTMLView here. 4013 return YES; 3989 if ([mainFrameView acceptsFirstResponder]) { 3990 _private->becomingFirstResponder = YES; 3991 _private->becomingFirstResponderFromOutside = fromOutside; 3992 [window makeFirstResponder:mainFrameView]; 3993 _private->becomingFirstResponderFromOutside = NO; 3994 _private->becomingFirstResponder = NO; 3995 return YES; 3996 } 3997 3998 return NO; 4014 3999 } 4015 4000 4016 4001 - (NSView *)_webcore_effectiveFirstResponder 4017 4002 { 4018 if (_private && _private->usesDocumentViews) { 4019 if (WebFrameView *frameView = [[self mainFrame] frameView]) 4020 return [frameView _webcore_effectiveFirstResponder]; 4021 } 4003 if (WebFrameView *frameView = [[self mainFrame] frameView]) 4004 return [frameView _webcore_effectiveFirstResponder]; 4005 4022 4006 return [super _webcore_effectiveFirstResponder]; 4023 4007 } … … 4025 4009 - (void)setNextKeyView:(NSView *)view 4026 4010 { 4027 if (_private && _private->usesDocumentViews) { 4028 // This works together with becomeFirstResponder to splice the WebView into 4029 // the key loop similar to the way NSScrollView does this. Note that 4030 // WebFrameView has similar code. 4031 if (WebFrameView *mainFrameView = [[self mainFrame] frameView]) { 4032 [mainFrameView setNextKeyView:view]; 4033 return; 4034 } 4011 // This works together with becomeFirstResponder to splice the WebView into 4012 // the key loop similar to the way NSScrollView does this. Note that 4013 // WebFrameView has similar code. 4014 if (WebFrameView *mainFrameView = [[self mainFrame] frameView]) { 4015 [mainFrameView setNextKeyView:view]; 4016 return; 4035 4017 } 4036 4018 … … 4558 4540 _private->hoverFeedbackSuspended = newValue; 4559 4541 4560 if (_private->usesDocumentViews) { 4561 id <WebDocumentView> documentView = [[[self mainFrame] frameView] documentView]; 4562 // FIXME: in a perfect world we'd do this in a general way that worked with any document view, 4563 // such as by calling a protocol method or using respondsToSelector or sending a notification. 4564 // But until there is any need for these more general solutions, we'll just hardwire it to work 4565 // with WebHTMLView. 4566 // Note that _hoverFeedbackSuspendedChanged needs to be called only on the main WebHTMLView, not 4567 // on each subframe separately. 4568 if ([documentView isKindOfClass:[WebHTMLView class]]) 4569 [(WebHTMLView *)documentView _hoverFeedbackSuspendedChanged]; 4570 return; 4571 } 4572 4573 [self _updateMouseoverWithFakeEvent]; 4542 id <WebDocumentView> documentView = [[[self mainFrame] frameView] documentView]; 4543 // FIXME: in a perfect world we'd do this in a general way that worked with any document view, 4544 // such as by calling a protocol method or using respondsToSelector or sending a notification. 4545 // But until there is any need for these more general solutions, we'll just hardwire it to work 4546 // with WebHTMLView. 4547 // Note that _hoverFeedbackSuspendedChanged needs to be called only on the main WebHTMLView, not 4548 // on each subframe separately. 4549 if ([documentView isKindOfClass:[WebHTMLView class]]) 4550 [(WebHTMLView *)documentView _hoverFeedbackSuspendedChanged]; 4574 4551 } 4575 4552
Note: See TracChangeset
for help on using the changeset viewer.