| Index: Source/core/rendering/LayoutState.cpp
|
| diff --git a/Source/core/rendering/LayoutState.cpp b/Source/core/rendering/LayoutState.cpp
|
| index 7015a53f1747a4e382335807140d0e8106d900c3..e7e4abf0cea0f58f1410ff16bd9e02a32b656b73 100644
|
| --- a/Source/core/rendering/LayoutState.cpp
|
| +++ b/Source/core/rendering/LayoutState.cpp
|
| @@ -34,10 +34,8 @@
|
| namespace WebCore {
|
|
|
| LayoutState::LayoutState(LayoutUnit pageLogicalHeight, bool pageLogicalHeightChanged, RenderView& view)
|
| - : m_clipped(false)
|
| - , m_isPaginated(pageLogicalHeight)
|
| + : m_isPaginated(pageLogicalHeight)
|
| , m_pageLogicalHeightChanged(pageLogicalHeightChanged)
|
| - , m_cachedOffsetsEnabled(true)
|
| , m_columnInfo(0)
|
| , m_next(0)
|
| , m_pageLogicalHeight(pageLogicalHeight)
|
| @@ -53,44 +51,21 @@
|
| , m_renderer(renderer)
|
| {
|
| renderer.view()->pushLayoutState(*this);
|
| - m_cachedOffsetsEnabled = m_next->m_cachedOffsetsEnabled && renderer.supportsLayoutStateCachedOffsets();
|
| bool fixed = renderer.isOutOfFlowPositioned() && renderer.style()->position() == FixedPosition;
|
| if (fixed) {
|
| // FIXME: This doesn't work correctly with transforms.
|
| FloatPoint fixedOffset = renderer.view()->localToAbsolute(FloatPoint(), IsFixed);
|
| - m_paintOffset = LayoutSize(fixedOffset.x(), fixedOffset.y()) + offset;
|
| + m_layoutOffset = LayoutSize(fixedOffset.x(), fixedOffset.y()) + offset;
|
| } else {
|
| - m_paintOffset = m_next->m_paintOffset + offset;
|
| + m_layoutOffset = m_next->m_layoutOffset + offset;
|
| }
|
|
|
| if (renderer.isOutOfFlowPositioned() && !fixed) {
|
| if (RenderObject* container = renderer.container()) {
|
| - if (container->isRelPositioned() && container->isRenderInline())
|
| - m_paintOffset += toRenderInline(container)->offsetForInFlowPositionedInline(renderer);
|
| + if (container->style()->hasInFlowPosition() && container->isRenderInline())
|
| + m_layoutOffset += toRenderInline(container)->offsetForInFlowPositionedInline(renderer);
|
| }
|
| }
|
| -
|
| - m_layoutOffset = m_paintOffset;
|
| -
|
| - if (renderer.isRelPositioned() && renderer.hasLayer())
|
| - m_paintOffset += renderer.layer()->offsetForInFlowPosition();
|
| -
|
| - m_clipped = !fixed && m_next->m_clipped;
|
| - if (m_clipped)
|
| - m_clipRect = m_next->m_clipRect;
|
| -
|
| - if (renderer.hasOverflowClip()) {
|
| - LayoutRect clipRect(toPoint(m_paintOffset), renderer.cachedSizeForOverflowClip());
|
| - if (m_clipped)
|
| - m_clipRect.intersect(clipRect);
|
| - else {
|
| - m_clipRect = clipRect;
|
| - m_clipped = true;
|
| - }
|
| -
|
| - m_paintOffset -= renderer.scrolledContentOffset();
|
| - }
|
| -
|
| // If we establish a new page height, then cache the offset to the top of the first page.
|
| // We can compare this later on to figure out what part of the page we're actually on,
|
| if (pageLogicalHeight || m_columnInfo || renderer.isRenderFlowThread()) {
|
| @@ -122,49 +97,9 @@
|
| // FIXME: <http://bugs.webkit.org/show_bug.cgi?id=13443> Apply control clip if present.
|
| }
|
|
|
| -LayoutState::LayoutState(RenderInline& renderer)
|
| - : m_next(renderer.view()->layoutState())
|
| - , m_renderer(renderer)
|
| -{
|
| - ASSERT(m_next);
|
| -
|
| - renderer.view()->pushLayoutState(*this);
|
| - m_cachedOffsetsEnabled = m_next->m_cachedOffsetsEnabled && renderer.supportsLayoutStateCachedOffsets();
|
| -
|
| - m_paintOffset = m_next->m_paintOffset;
|
| - // Handle relative positioned inline.
|
| - if (renderer.style()->hasInFlowPosition() && renderer.layer())
|
| - m_paintOffset += renderer.layer()->offsetForInFlowPosition();
|
| -
|
| - // RenderInline can't be out-of-flow positioned.
|
| -
|
| - // The following can't apply to RenderInline so we just propagate them.
|
| - m_clipped = m_next->m_clipped;
|
| - m_clipRect = m_next->m_clipRect;
|
| -
|
| - m_pageLogicalHeight = m_next->m_pageLogicalHeight;
|
| - m_pageLogicalHeightChanged = m_next->m_pageLogicalHeightChanged;
|
| - m_pageOffset = m_next->m_pageOffset;
|
| -
|
| - m_columnInfo = m_next->m_columnInfo;
|
| -}
|
| -
|
| -inline static bool shouldDisableLayoutStateForSubtree(RenderObject& renderer)
|
| -{
|
| - RenderObject* object = &renderer;
|
| - while (object) {
|
| - if (object->supportsLayoutStateCachedOffsets())
|
| - return true;
|
| - object = object->container();
|
| - }
|
| - return false;
|
| -}
|
| -
|
| LayoutState::LayoutState(RenderObject& root)
|
| - : m_clipped(false)
|
| - , m_isPaginated(false)
|
| + : m_isPaginated(false)
|
| , m_pageLogicalHeightChanged(false)
|
| - , m_cachedOffsetsEnabled(shouldDisableLayoutStateForSubtree(root))
|
| , m_columnInfo(0)
|
| , m_next(root.view()->layoutState())
|
| , m_pageLogicalHeight(0)
|
| @@ -180,14 +115,7 @@
|
|
|
| RenderObject* container = root.container();
|
| FloatPoint absContentPoint = container->localToAbsolute(FloatPoint(), UseTransforms);
|
| - m_paintOffset = LayoutSize(absContentPoint.x(), absContentPoint.y());
|
| -
|
| - if (container->hasOverflowClip()) {
|
| - m_clipped = true;
|
| - RenderBox* containerBox = toRenderBox(container);
|
| - m_clipRect = LayoutRect(toPoint(m_paintOffset), containerBox->cachedSizeForOverflowClip());
|
| - m_paintOffset -= containerBox->scrolledContentOffset();
|
| - }
|
| + m_layoutOffset = LayoutSize(absContentPoint.x(), absContentPoint.y());
|
| }
|
|
|
| LayoutState::~LayoutState()
|
|
|