| Index: third_party/WebKit/Source/WebKit/chromium/src/WebScrollbarGroupImpl.cpp
|
| ===================================================================
|
| --- third_party/WebKit/Source/WebKit/chromium/src/WebScrollbarGroupImpl.cpp (revision 0)
|
| +++ third_party/WebKit/Source/WebKit/chromium/src/WebScrollbarGroupImpl.cpp (revision 0)
|
| @@ -0,0 +1,273 @@
|
| +/*
|
| + * Copyright (C) 2011 Google 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:
|
| + *
|
| + * * Redistributions of source code must retain the above copyright
|
| + * notice, this list of conditions and the following disclaimer.
|
| + * * 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.
|
| + * * Neither the name of Google Inc. 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
|
| + * OWNER 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.
|
| + */
|
| +
|
| +#include "config.h"
|
| +#include "WebScrollbarGroupImpl.h"
|
| +
|
| +#include "ScrollAnimator.h"
|
| +#include "Scrollbar.h"
|
| +#include "WebScrollbarImpl.h"
|
| +#include "ScrollbarTheme.h"
|
| +#include "WebRect.h"
|
| +
|
| +using namespace std;
|
| +using namespace WebCore;
|
| +
|
| +namespace WebKit {
|
| +
|
| +WebScrollbarGroup* WebScrollbarGroup::create()
|
| +{
|
| + return new WebScrollbarGroupImpl();
|
| +}
|
| +
|
| +WebScrollbarGroupImpl::WebScrollbarGroupImpl()
|
| + : m_horizontalScrollbar(0)
|
| + , m_verticalScrollbar(0)
|
| +{
|
| +}
|
| +
|
| +WebScrollbarGroupImpl::~WebScrollbarGroupImpl()
|
| +{
|
| + WEBKIT_ASSERT(!m_horizontalScrollbar);
|
| + WEBKIT_ASSERT(!m_verticalScrollbar);
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::scrollbarCreated(WebScrollbarImpl* scrollbar)
|
| +{
|
| + if (scrollbar->scrollbar()->orientation() == HorizontalScrollbar) {
|
| + m_horizontalScrollbar = scrollbar;
|
| + didAddHorizontalScrollbar(scrollbar->scrollbar());
|
| + } else {
|
| + m_verticalScrollbar = scrollbar;
|
| + didAddVerticalScrollbar(scrollbar->scrollbar());
|
| + }
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::scrollbarDestroyed(WebScrollbarImpl* scrollbar)
|
| +{
|
| + if (scrollbar == m_horizontalScrollbar) {
|
| + willRemoveHorizontalScrollbar(scrollbar->scrollbar());
|
| + m_horizontalScrollbar = 0;
|
| + } else {
|
| + willRemoveVerticalScrollbar(scrollbar->scrollbar());
|
| + m_verticalScrollbar = 0;
|
| + }
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::setLastMousePosition(const IntPoint& point)
|
| +{
|
| + m_lastMousePosition = point;
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::mouseEnteredContentArea()
|
| +{
|
| + scrollAnimator()->mouseEnteredContentArea();
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::mouseMovedInContentArea()
|
| +{
|
| + scrollAnimator()->mouseMovedInContentArea();
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::mouseExitedContentArea()
|
| +{
|
| + scrollAnimator()->mouseExitedContentArea();
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::willStartLiveResize()
|
| +{
|
| + ScrollableArea::willStartLiveResize();
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::contentResized()
|
| +{
|
| + scrollAnimator()->contentsResized();
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::willEndLiveResize()
|
| +{
|
| + ScrollableArea::willEndLiveResize();
|
| +}
|
| +
|
| +int WebScrollbarGroupImpl::scrollSize(WebCore::ScrollbarOrientation orientation) const
|
| +{
|
| + WebScrollbarImpl* webScrollbar = orientation == HorizontalScrollbar ? m_horizontalScrollbar : m_verticalScrollbar;
|
| + if (!webScrollbar)
|
| + return 0;
|
| + Scrollbar* scrollbar = webScrollbar->scrollbar();
|
| + return scrollbar->totalSize() - scrollbar->visibleSize();
|
| +}
|
| +
|
| +int WebScrollbarGroupImpl::scrollPosition(Scrollbar* scrollbar) const
|
| +{
|
| + WebScrollbarImpl* webScrollbar = scrollbar->orientation() == HorizontalScrollbar ? m_horizontalScrollbar : m_verticalScrollbar;
|
| + if (!webScrollbar)
|
| + return 0;
|
| + return webScrollbar->scrollOffset();
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::setScrollOffset(const IntPoint& offset)
|
| +{
|
| + if (m_horizontalScrollbar && m_horizontalScrollbar->scrollOffset() != offset.x())
|
| + m_horizontalScrollbar->setScrollOffset(offset.x());
|
| + else if (m_verticalScrollbar && m_verticalScrollbar->scrollOffset() != offset.y())
|
| + m_verticalScrollbar->setScrollOffset(offset.y());
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::invalidateScrollbarRect(Scrollbar* scrollbar, const IntRect& rect)
|
| +{
|
| + if (m_horizontalScrollbar && scrollbar == m_horizontalScrollbar->scrollbar())
|
| + m_horizontalScrollbar->invalidateScrollbarRect(rect);
|
| + else if (m_verticalScrollbar && scrollbar == m_verticalScrollbar->scrollbar())
|
| + m_verticalScrollbar->invalidateScrollbarRect(rect);
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::invalidateScrollCornerRect(const IntRect&)
|
| +{
|
| +}
|
| +
|
| +bool WebScrollbarGroupImpl::isActive() const
|
| +{
|
| + return true;
|
| +}
|
| +
|
| +ScrollableArea* WebScrollbarGroupImpl::enclosingScrollableArea() const
|
| +{
|
| + // FIXME: Return a parent scrollable area that can be scrolled.
|
| + return 0;
|
| +}
|
| +
|
| +bool WebScrollbarGroupImpl::isScrollCornerVisible() const
|
| +{
|
| + return false;
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::getTickmarks(Vector<IntRect>& tickmarks) const
|
| +{
|
| + if (m_verticalScrollbar)
|
| + m_verticalScrollbar->getTickmarks(tickmarks);
|
| +}
|
| +
|
| +IntPoint WebScrollbarGroupImpl::convertFromContainingViewToScrollbar(const Scrollbar* scrollbar, const IntPoint& parentPoint) const
|
| +{
|
| + if (m_horizontalScrollbar && scrollbar == m_horizontalScrollbar->scrollbar())
|
| + return m_horizontalScrollbar->convertFromContainingViewToScrollbar(parentPoint);
|
| + if (m_verticalScrollbar && scrollbar == m_verticalScrollbar->scrollbar())
|
| + return m_verticalScrollbar->convertFromContainingViewToScrollbar(parentPoint);
|
| + WEBKIT_ASSERT_NOT_REACHED();
|
| + return IntPoint();
|
| +}
|
| +
|
| +Scrollbar* WebScrollbarGroupImpl::horizontalScrollbar() const
|
| +{
|
| + return m_horizontalScrollbar ? m_horizontalScrollbar->scrollbar() : 0;
|
| +}
|
| +
|
| +Scrollbar* WebScrollbarGroupImpl::verticalScrollbar() const
|
| +{
|
| + return m_verticalScrollbar ? m_verticalScrollbar->scrollbar() : 0;
|
| +}
|
| +
|
| +IntPoint WebScrollbarGroupImpl::scrollPosition() const {
|
| + int x = m_horizontalScrollbar ? m_horizontalScrollbar->scrollOffset() : 0;
|
| + int y = m_verticalScrollbar ? m_verticalScrollbar->scrollOffset() : 0;
|
| + return IntPoint(x, y);
|
| +}
|
| +
|
| +IntPoint WebScrollbarGroupImpl::minimumScrollPosition() const {
|
| + return IntPoint();
|
| +}
|
| +
|
| +IntPoint WebScrollbarGroupImpl::maximumScrollPosition() const {
|
| + return IntPoint(contentsSize().width() - visibleWidth(), contentsSize().height() - visibleHeight());
|
| +}
|
| +
|
| +int WebScrollbarGroupImpl::visibleHeight() const
|
| +{
|
| + if (m_verticalScrollbar)
|
| + return m_verticalScrollbar->scrollbar()->height();
|
| + if (m_horizontalScrollbar)
|
| + return m_horizontalScrollbar->scrollbar()->height();
|
| + WEBKIT_ASSERT_NOT_REACHED();
|
| + return 0;
|
| +}
|
| +
|
| +int WebScrollbarGroupImpl::visibleWidth() const
|
| +{
|
| + if (m_horizontalScrollbar)
|
| + return m_horizontalScrollbar->scrollbar()->width();
|
| + if (m_verticalScrollbar)
|
| + return m_verticalScrollbar->scrollbar()->width();
|
| + WEBKIT_ASSERT_NOT_REACHED();
|
| + return 0;
|
| +}
|
| +
|
| +IntSize WebScrollbarGroupImpl::contentsSize() const
|
| +{
|
| + IntSize size;
|
| + if (m_horizontalScrollbar)
|
| + size.setWidth(m_horizontalScrollbar->scrollbar()->totalSize());
|
| + else if (m_verticalScrollbar)
|
| + size.setWidth(m_verticalScrollbar->scrollbar()->x());
|
| + if (m_verticalScrollbar)
|
| + size.setHeight(m_verticalScrollbar->scrollbar()->totalSize());
|
| + else if (m_horizontalScrollbar)
|
| + size.setHeight(m_horizontalScrollbar->scrollbar()->y());
|
| + return size;
|
| +}
|
| +
|
| +IntSize WebScrollbarGroupImpl::overhangAmount() const
|
| +{
|
| + return IntSize();
|
| +}
|
| +
|
| +IntPoint WebScrollbarGroupImpl::currentMousePosition() const
|
| +{
|
| + return m_lastMousePosition;
|
| +}
|
| +
|
| +bool WebScrollbarGroupImpl::shouldSuspendScrollAnimations() const
|
| +{
|
| + return false;
|
| +}
|
| +
|
| +void WebScrollbarGroupImpl::scrollbarStyleChanged()
|
| +{
|
| + if (m_horizontalScrollbar)
|
| + m_horizontalScrollbar->scrollbarStyleChanged();
|
| + if (m_verticalScrollbar)
|
| + m_verticalScrollbar->scrollbarStyleChanged();
|
| +}
|
| +
|
| +bool WebScrollbarGroupImpl::isOnActivePage() const {
|
| + return true;
|
| +}
|
| +
|
| +} // namespace WebKit
|
|
|
| Property changes on: third_party\WebKit\Source\WebKit\chromium\src\WebScrollbarGroupImpl.cpp
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|