| Index: Source/core/rendering/RenderScrollbarPart.cpp
|
| diff --git a/Source/core/rendering/RenderScrollbarPart.cpp b/Source/core/rendering/RenderScrollbarPart.cpp
|
| deleted file mode 100644
|
| index 575640e24807b5117fa5e6ff5a44b1b8fe239bca..0000000000000000000000000000000000000000
|
| --- a/Source/core/rendering/RenderScrollbarPart.cpp
|
| +++ /dev/null
|
| @@ -1,209 +0,0 @@
|
| -/*
|
| - * Copyright (C) 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 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 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.
|
| - */
|
| -
|
| -#include "config.h"
|
| -#include "core/rendering/RenderScrollbarPart.h"
|
| -
|
| -#include "core/frame/UseCounter.h"
|
| -#include "core/layout/PaintInfo.h"
|
| -#include "core/rendering/RenderScrollbar.h"
|
| -#include "core/rendering/RenderScrollbarTheme.h"
|
| -#include "core/rendering/RenderView.h"
|
| -#include "platform/LengthFunctions.h"
|
| -
|
| -namespace blink {
|
| -
|
| -RenderScrollbarPart::RenderScrollbarPart(RenderScrollbar* scrollbar, ScrollbarPart part)
|
| - : RenderBlock(0)
|
| - , m_scrollbar(scrollbar)
|
| - , m_part(part)
|
| -{
|
| -}
|
| -
|
| -RenderScrollbarPart::~RenderScrollbarPart()
|
| -{
|
| -}
|
| -
|
| -static void recordScrollbarPartStats(Document& document, ScrollbarPart part)
|
| -{
|
| - switch (part) {
|
| - case BackButtonStartPart:
|
| - case ForwardButtonStartPart:
|
| - case BackButtonEndPart:
|
| - case ForwardButtonEndPart:
|
| - UseCounter::count(document, UseCounter::CSSSelectorPseudoScrollbarButton);
|
| - break;
|
| - case BackTrackPart:
|
| - case ForwardTrackPart:
|
| - UseCounter::count(document, UseCounter::CSSSelectorPseudoScrollbarTrackPiece);
|
| - break;
|
| - case ThumbPart:
|
| - UseCounter::count(document, UseCounter::CSSSelectorPseudoScrollbarThumb);
|
| - break;
|
| - case TrackBGPart:
|
| - UseCounter::count(document, UseCounter::CSSSelectorPseudoScrollbarTrack);
|
| - break;
|
| - case ScrollbarBGPart:
|
| - UseCounter::count(document, UseCounter::CSSSelectorPseudoScrollbar);
|
| - break;
|
| - case NoPart:
|
| - case AllParts:
|
| - break;
|
| - }
|
| -}
|
| -
|
| -RenderScrollbarPart* RenderScrollbarPart::createAnonymous(Document* document, RenderScrollbar* scrollbar, ScrollbarPart part)
|
| -{
|
| - RenderScrollbarPart* renderer = new RenderScrollbarPart(scrollbar, part);
|
| - recordScrollbarPartStats(*document, part);
|
| - renderer->setDocumentForAnonymous(document);
|
| - return renderer;
|
| -}
|
| -
|
| -void RenderScrollbarPart::layout()
|
| -{
|
| - setLocation(LayoutPoint()); // We don't worry about positioning ourselves. We're just determining our minimum width/height.
|
| - if (m_scrollbar->orientation() == HorizontalScrollbar)
|
| - layoutHorizontalPart();
|
| - else
|
| - layoutVerticalPart();
|
| -
|
| - clearNeedsLayout();
|
| -}
|
| -
|
| -void RenderScrollbarPart::layoutHorizontalPart()
|
| -{
|
| - if (m_part == ScrollbarBGPart) {
|
| - setWidth(m_scrollbar->width());
|
| - computeScrollbarHeight();
|
| - } else {
|
| - computeScrollbarWidth();
|
| - setHeight(m_scrollbar->height());
|
| - }
|
| -}
|
| -
|
| -void RenderScrollbarPart::layoutVerticalPart()
|
| -{
|
| - if (m_part == ScrollbarBGPart) {
|
| - computeScrollbarWidth();
|
| - setHeight(m_scrollbar->height());
|
| - } else {
|
| - setWidth(m_scrollbar->width());
|
| - computeScrollbarHeight();
|
| - }
|
| -}
|
| -
|
| -static int calcScrollbarThicknessUsing(SizeType sizeType, const Length& length, int containingLength)
|
| -{
|
| - if (!length.isIntrinsicOrAuto() || (sizeType == MinSize && length.isAuto()))
|
| - return minimumValueForLength(length, containingLength);
|
| - return ScrollbarTheme::theme()->scrollbarThickness();
|
| -}
|
| -
|
| -void RenderScrollbarPart::computeScrollbarWidth()
|
| -{
|
| - if (!m_scrollbar->owningRenderer())
|
| - return;
|
| - // FIXME: We are querying layout information but nothing guarantees that it's up-to-date, especially since we are called at style change.
|
| - // FIXME: Querying the style's border information doesn't work on table cells with collapsing borders.
|
| - int visibleSize = m_scrollbar->owningRenderer()->size().width() - m_scrollbar->owningRenderer()->style()->borderLeftWidth() - m_scrollbar->owningRenderer()->style()->borderRightWidth();
|
| - int w = calcScrollbarThicknessUsing(MainOrPreferredSize, style()->width(), visibleSize);
|
| - int minWidth = calcScrollbarThicknessUsing(MinSize, style()->minWidth(), visibleSize);
|
| - int maxWidth = style()->maxWidth().isMaxSizeNone() ? w : calcScrollbarThicknessUsing(MaxSize, style()->maxWidth(), visibleSize);
|
| - setWidth(std::max(minWidth, std::min(maxWidth, w)));
|
| -
|
| - // Buttons and track pieces can all have margins along the axis of the scrollbar.
|
| - setMarginLeft(minimumValueForLength(style()->marginLeft(), visibleSize));
|
| - setMarginRight(minimumValueForLength(style()->marginRight(), visibleSize));
|
| -}
|
| -
|
| -void RenderScrollbarPart::computeScrollbarHeight()
|
| -{
|
| - if (!m_scrollbar->owningRenderer())
|
| - return;
|
| - // FIXME: We are querying layout information but nothing guarantees that it's up-to-date, especially since we are called at style change.
|
| - // FIXME: Querying the style's border information doesn't work on table cells with collapsing borders.
|
| - int visibleSize = m_scrollbar->owningRenderer()->size().height() - m_scrollbar->owningRenderer()->style()->borderTopWidth() - m_scrollbar->owningRenderer()->style()->borderBottomWidth();
|
| - int h = calcScrollbarThicknessUsing(MainOrPreferredSize, style()->height(), visibleSize);
|
| - int minHeight = calcScrollbarThicknessUsing(MinSize, style()->minHeight(), visibleSize);
|
| - int maxHeight = style()->maxHeight().isMaxSizeNone() ? h : calcScrollbarThicknessUsing(MaxSize, style()->maxHeight(), visibleSize);
|
| - setHeight(std::max(minHeight, std::min(maxHeight, h)));
|
| -
|
| - // Buttons and track pieces can all have margins along the axis of the scrollbar.
|
| - setMarginTop(minimumValueForLength(style()->marginTop(), visibleSize));
|
| - setMarginBottom(minimumValueForLength(style()->marginBottom(), visibleSize));
|
| -}
|
| -
|
| -void RenderScrollbarPart::computePreferredLogicalWidths()
|
| -{
|
| - if (!preferredLogicalWidthsDirty())
|
| - return;
|
| -
|
| - m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = 0;
|
| -
|
| - clearPreferredLogicalWidthsDirty();
|
| -}
|
| -
|
| -void RenderScrollbarPart::styleWillChange(StyleDifference diff, const LayoutStyle& newStyle)
|
| -{
|
| - RenderBlock::styleWillChange(diff, newStyle);
|
| - setInline(false);
|
| -}
|
| -
|
| -void RenderScrollbarPart::styleDidChange(StyleDifference diff, const LayoutStyle* oldStyle)
|
| -{
|
| - RenderBlock::styleDidChange(diff, oldStyle);
|
| - setInline(false);
|
| - clearPositionedState();
|
| - setFloating(false);
|
| - setHasOverflowClip(false);
|
| - if (oldStyle && m_scrollbar && m_part != NoPart && (diff.needsPaintInvalidation() || diff.needsLayout()))
|
| - m_scrollbar->theme()->invalidatePart(m_scrollbar, m_part);
|
| -}
|
| -
|
| -void RenderScrollbarPart::imageChanged(WrappedImagePtr image, const IntRect* rect)
|
| -{
|
| - if (m_scrollbar && m_part != NoPart)
|
| - m_scrollbar->theme()->invalidatePart(m_scrollbar, m_part);
|
| - else {
|
| - if (FrameView* frameView = view()->frameView()) {
|
| - if (frameView->isFrameViewScrollCorner(this)) {
|
| - frameView->invalidateScrollCorner(frameView->scrollCornerRect());
|
| - return;
|
| - }
|
| - }
|
| -
|
| - RenderBlock::imageChanged(image, rect);
|
| - }
|
| -}
|
| -
|
| -LayoutObject* RenderScrollbarPart::rendererOwningScrollbar() const
|
| -{
|
| - if (!m_scrollbar)
|
| - return 0;
|
| - return m_scrollbar->owningRenderer();
|
| -}
|
| -
|
| -}
|
|
|