Changeset 95465 in webkit


Ignore:
Timestamp:
Sep 19, 2011 1:27:42 PM (13 years ago)
Author:
andersca@apple.com
Message:

Begin removing -[WebView _usesDocumentCalls] from WebView.mm
https://bugs.webkit.org/show_bug.cgi?id=68383

Reviewed by Adam Roben.

Remove checks and begin assuming that -[WebView _usesDocumentViews] always
returns true, since viewless WebKit1 has been abandoned.

  • WebView/WebView.mm:

(-[WebView selectedFrame]):
(-[WebView setHostWindow:]):
(-[WebView acceptsFirstResponder]):
(-[WebView becomeFirstResponder]):
(-[WebView _webcore_effectiveFirstResponder]):
(-[WebView setNextKeyView:]):
(-[WebView setHoverFeedbackSuspended:]):

Location:
trunk/Source/WebKit/mac
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/mac/ChangeLog

    r95459 r95465  
     12011-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
    1202011-09-19  Anders Carlsson  <andersca@apple.com>
    221
  • trunk/Source/WebKit/mac/WebView/WebView.mm

    r95271 r95465  
    35323532- (WebFrame *)selectedFrame
    35333533{
    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;
    35423540   
    35433541    // If the first responder is outside of our view tree, we search for a frame containing a selection.
     
    38253823
    38263824    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];
    38313827    if (_private->hostWindow && [self window] != _private->hostWindow)
    38323828        [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowWillCloseNotification object:_private->hostWindow];
     
    38353831    [_private->hostWindow release];
    38363832    _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];
    38413835}
    38423836
     
    39593953- (BOOL)acceptsFirstResponder
    39603954{
    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];
    39663956}
    39673957
    39683958- (BOOL)becomeFirstResponder
    39693959{
    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) {
    40013979            _private->becomingFirstResponder = YES;
    40023980            _private->becomingFirstResponderFromOutside = fromOutside;
    4003             [window makeFirstResponder:mainFrameView];
     3981            [window makeFirstResponder:previousValidKeyView];
    40043982            _private->becomingFirstResponderFromOutside = NO;
    40053983            _private->becomingFirstResponder = NO;
    40063984            return YES;
    4007         }
    4008 
     3985        }
    40093986        return NO;
    40103987    }
    40113988
    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;
    40143999}
    40154000
    40164001- (NSView *)_webcore_effectiveFirstResponder
    40174002{
    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
    40224006    return [super _webcore_effectiveFirstResponder];
    40234007}
     
    40254009- (void)setNextKeyView:(NSView *)view
    40264010{
    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;
    40354017    }
    40364018
     
    45584540    _private->hoverFeedbackSuspended = newValue;
    45594541
    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];
    45744551}
    45754552
Note: See TracChangeset for help on using the changeset viewer.