diff options
Diffstat (limited to 'WebCore/platform/mac/ScrollViewMac.mm')
-rw-r--r-- | WebCore/platform/mac/ScrollViewMac.mm | 213 |
1 files changed, 0 insertions, 213 deletions
diff --git a/WebCore/platform/mac/ScrollViewMac.mm b/WebCore/platform/mac/ScrollViewMac.mm deleted file mode 100644 index 93ec971..0000000 --- a/WebCore/platform/mac/ScrollViewMac.mm +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (C) 2004, 2006, 2007, 2008 Apple 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. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 COMPUTER, INC. OR - * 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 "config.h" -#import "ScrollView.h" - -#import "BlockExceptions.h" -#import "FloatRect.h" -#import "IntRect.h" -#import "Logging.h" -#import "NotImplemented.h" -#import "WebCoreFrameView.h" - -using namespace std; - -@interface NSWindow (WebWindowDetails) -- (BOOL)_needsToResetDragMargins; -- (void)_setNeedsToResetDragMargins:(BOOL)needs; -@end - -namespace WebCore { - -inline NSScrollView<WebCoreFrameScrollView> *ScrollView::scrollView() const -{ - ASSERT(!platformWidget() || [platformWidget() isKindOfClass:[NSScrollView class]]); - ASSERT(!platformWidget() || [platformWidget() conformsToProtocol:@protocol(WebCoreFrameScrollView)]); - return static_cast<NSScrollView<WebCoreFrameScrollView> *>(platformWidget()); -} - -NSView *ScrollView::documentView() const -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - return [scrollView() documentView]; - END_BLOCK_OBJC_EXCEPTIONS; - return nil; -} - -void ScrollView::platformAddChild(Widget* child) -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - NSView *parentView = documentView(); - NSView *childView = child->getOuterView(); - ASSERT(![parentView isDescendantOf:childView]); - - // Suppress the resetting of drag margins since we know we can't affect them. - NSWindow *window = [parentView window]; - BOOL resetDragMargins = [window _needsToResetDragMargins]; - [window _setNeedsToResetDragMargins:NO]; - if ([childView superview] != parentView) - [parentView addSubview:childView]; - [window _setNeedsToResetDragMargins:resetDragMargins]; - END_BLOCK_OBJC_EXCEPTIONS; -} - -void ScrollView::platformRemoveChild(Widget* child) -{ - child->removeFromSuperview(); -} - -void ScrollView::platformSetScrollbarModes() -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - [scrollView() setScrollingModes:m_horizontalScrollbarMode vertical:m_verticalScrollbarMode andLock:NO]; - END_BLOCK_OBJC_EXCEPTIONS; -} - -void ScrollView::platformScrollbarModes(ScrollbarMode& horizontal, ScrollbarMode& vertical) const -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - [scrollView() scrollingModes:&horizontal vertical:&vertical]; - END_BLOCK_OBJC_EXCEPTIONS; -} - -void ScrollView::platformSetCanBlitOnScroll(bool canBlitOnScroll) -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - [[scrollView() contentView] setCopiesOnScroll:canBlitOnScroll]; - END_BLOCK_OBJC_EXCEPTIONS; -} - -bool ScrollView::platformCanBlitOnScroll() const -{ - return [[scrollView() contentView] copiesOnScroll]; -} - -IntRect ScrollView::platformVisibleContentRect(bool includeScrollbars) const -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - IntRect result = enclosingIntRect([scrollView() documentVisibleRect]); - if (includeScrollbars) - result.setSize(IntSize([scrollView() frame].size)); - return result; - END_BLOCK_OBJC_EXCEPTIONS; - return IntRect(); -} - -IntSize ScrollView::platformContentsSize() const -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - if (NSView* documentView = this->documentView()) - return enclosingIntRect([documentView bounds]).size(); - END_BLOCK_OBJC_EXCEPTIONS; - return IntSize(); -} - -void ScrollView::platformSetContentsSize() -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - int w = m_contentsSize.width(); - int h = m_contentsSize.height(); - LOG(Frames, "%p %@ at w %d h %d\n", documentView(), [(id)[documentView() class] className], w, h); - NSSize tempSize = { max(0, w), max(0, h) }; // workaround for 4213314 - [documentView() setFrameSize:tempSize]; - END_BLOCK_OBJC_EXCEPTIONS; -} - -void ScrollView::platformSetScrollbarsSuppressed(bool repaintOnUnsuppress) -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - [scrollView() setScrollBarsSuppressed:m_scrollbarsSuppressed - repaintOnUnsuppress:repaintOnUnsuppress]; - END_BLOCK_OBJC_EXCEPTIONS; -} - -void ScrollView::platformSetScrollPosition(const IntPoint& scrollPoint) -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - NSPoint floatPoint = scrollPoint; - NSPoint tempPoint = { max(-[scrollView() scrollOrigin].x, floatPoint.x), max(-[scrollView() scrollOrigin].y, floatPoint.y) }; // Don't use NSMakePoint to work around 4213314. - [documentView() scrollPoint:tempPoint]; - END_BLOCK_OBJC_EXCEPTIONS; -} - -bool ScrollView::platformScroll(ScrollDirection, ScrollGranularity) -{ - // FIXME: It would be nice to implement this so that all of the code in WebFrameView could go away. - notImplemented(); - return false; -} - -void ScrollView::platformRepaintContentRectangle(const IntRect& rect, bool now) -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - NSView *view = documentView(); - [view setNeedsDisplayInRect:rect]; - if (now) { - [[view window] displayIfNeeded]; - [[view window] flushWindowIfNeeded]; - } - END_BLOCK_OBJC_EXCEPTIONS; -} - -// "Containing Window" means the NSWindow's coord system, which is origin lower left - -IntRect ScrollView::platformContentsToScreen(const IntRect& rect) const -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - if (NSView* documentView = this->documentView()) { - NSRect tempRect = rect; - tempRect = [documentView convertRect:tempRect toView:nil]; - tempRect.origin = [[documentView window] convertBaseToScreen:tempRect.origin]; - return enclosingIntRect(tempRect); - } - END_BLOCK_OBJC_EXCEPTIONS; - return IntRect(); -} - -IntPoint ScrollView::platformScreenToContents(const IntPoint& point) const -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - if (NSView* documentView = this->documentView()) { - NSPoint windowCoord = [[documentView window] convertScreenToBase: point]; - return IntPoint([documentView convertPoint:windowCoord fromView:nil]); - } - END_BLOCK_OBJC_EXCEPTIONS; - return IntPoint(); -} - -bool ScrollView::platformIsOffscreen() const -{ - return ![platformWidget() window] || ![[platformWidget() window] isVisible]; -} - -void ScrollView::platformSetScrollOrigin(const IntPoint& origin, bool updatePosition) -{ - BEGIN_BLOCK_OBJC_EXCEPTIONS; - [scrollView() setScrollOrigin:origin updatePosition:updatePosition]; - END_BLOCK_OBJC_EXCEPTIONS; -} - -} // namespace WebCore |