diff options
Diffstat (limited to 'WebKit/mac/WebView/WebClipView.m')
-rw-r--r-- | WebKit/mac/WebView/WebClipView.m | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/WebKit/mac/WebView/WebClipView.m b/WebKit/mac/WebView/WebClipView.m deleted file mode 100644 index b551145..0000000 --- a/WebKit/mac/WebView/WebClipView.m +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (C) 2005 Apple Computer, Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import "WebClipView.h" - -#import <WebKit/WebHTMLView.h> -#import <WebKit/WebNSViewExtras.h> -#import <WebKit/WebViewPrivate.h> -#import <wtf/Assertions.h> - -// WebClipView's entire reason for existing is to set the clip used by focus ring redrawing. -// There's no easy way to prevent the focus ring from drawing outside the passed-in clip rectangle -// because it expects to have to draw outside the bounds of the view it's being drawn for. -// But it looks for the enclosing clip view, which gives us a hook we can use to control it. -// The "additional clip" is a clip for focus ring redrawing. - -// FIXME: Change terminology from "additional clip" to "focus ring clip". - -@interface NSView (WebViewMethod) -- (WebView *)_webView; -@end - -@implementation WebClipView - -- (id)initWithFrame:(NSRect)frame -{ - self = [super initWithFrame:frame]; - if (!self) - return nil; - - // In WebHTMLView, we set a clip. This is not typical to do in an - // NSView, and while correct for any one invocation of drawRect:, - // it causes some bad problems if that clip is cached between calls. - // The cached graphics state, which clip views keep around, does - // cache the clip in this undesirable way. Consequently, we want to - // release the GState for all clip views for all views contained in - // a WebHTMLView. Here we do it for subframes, which use WebClipView. - // See these bugs for more information: - // <rdar://problem/3409315>: REGRESSSION (7B58-7B60)?: Safari draws blank frames on macosx.apple.com perf page - [self releaseGState]; - - return self; -} - -- (void)resetAdditionalClip -{ - ASSERT(_haveAdditionalClip); - _haveAdditionalClip = NO; -} - -- (void)setAdditionalClip:(NSRect)additionalClip -{ - ASSERT(!_haveAdditionalClip); - _haveAdditionalClip = YES; - _additionalClip = additionalClip; -} - -- (BOOL)hasAdditionalClip -{ - return _haveAdditionalClip; -} - -- (NSRect)additionalClip -{ - ASSERT(_haveAdditionalClip); - return _additionalClip; -} - -- (NSRect)_focusRingVisibleRect -{ - NSRect rect = [self visibleRect]; - if (_haveAdditionalClip) { - rect = NSIntersectionRect(rect, _additionalClip); - } - return rect; -} - -- (void)scrollWheel:(NSEvent *)event -{ - NSView *docView = [self documentView]; - if ([docView respondsToSelector:@selector(_webView)]) { -#if ENABLE(DASHBOARD_SUPPORT) - WebView *wv = [docView _webView]; - if ([wv _dashboardBehavior:WebDashboardBehaviorAllowWheelScrolling]) { - [super scrollWheel:event]; - } -#endif - return; - } - [super scrollWheel:event]; -} - -@end |