OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 1527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1538 } | 1538 } |
1539 | 1539 |
1540 layerRenderer->invalidatePaintRectangle(geometry.destRect()); | 1540 layerRenderer->invalidatePaintRectangle(geometry.destRect()); |
1541 if (geometry.destRect() == rendererRect) | 1541 if (geometry.destRect() == rendererRect) |
1542 return true; | 1542 return true; |
1543 } | 1543 } |
1544 } | 1544 } |
1545 return false; | 1545 return false; |
1546 } | 1546 } |
1547 | 1547 |
1548 void RenderBox::invalidateTreeAfterLayout(const RenderLayerModelObject& paintInv
alidationContainer) | 1548 void RenderBox::invalidateTreeAfterLayout(const PaintInvalidationState& paintInv
alidationState) |
1549 { | 1549 { |
1550 // FIXME: Currently only using this logic for RenderBox and its ilk. Ideally
, RenderBlockFlows with | 1550 // FIXME: Currently only using this logic for RenderBox and its ilk. Ideally
, RenderBlockFlows with |
1551 // inline children should track a dirty rect in local coordinates for dirty
lines instead of invalidating | 1551 // inline children should track a dirty rect in local coordinates for dirty
lines instead of invalidating |
1552 // the world. | 1552 // the world. |
1553 // FIXME: We should still be recursing through inline's children, as they ca
n have boxes, but we don't | 1553 // FIXME: We should still be recursing through inline's children, as they ca
n have boxes, but we don't |
1554 // appear to have tests for this? | 1554 // appear to have tests for this? |
1555 // FIXME: SVG should probably also go through this unified paint invalidatio
n system. | 1555 // FIXME: SVG should probably also go through this unified paint invalidatio
n system. |
1556 ASSERT(!needsLayout()); | 1556 ASSERT(!needsLayout()); |
1557 | 1557 |
1558 if (!shouldCheckForPaintInvalidationAfterLayout()) | 1558 if (!shouldCheckForPaintInvalidationAfterLayout()) |
1559 return; | 1559 return; |
1560 | 1560 |
1561 bool establishesNewPaintInvalidationContainer = isPaintInvalidationContainer
(); | 1561 bool establishesNewPaintInvalidationContainer = isPaintInvalidationContainer
(); |
1562 const RenderLayerModelObject& newPaintInvalidationContainer = *adjustComposi
tedContainerForSpecialAncestors(establishesNewPaintInvalidationContainer ? this
: &paintInvalidationContainer); | 1562 const RenderLayerModelObject& newPaintInvalidationContainer = *adjustComposi
tedContainerForSpecialAncestors(establishesNewPaintInvalidationContainer ? this
: &paintInvalidationState.paintInvalidationContainer()); |
1563 // FIXME: This assert should be re-enabled when we move paint invalidation t
o after compositing update. crbug.com/360286 | 1563 // FIXME: This assert should be re-enabled when we move paint invalidation t
o after compositing update. crbug.com/360286 |
1564 // ASSERT(&newPaintInvalidationContainer == containerForPaintInvalidation())
; | 1564 // ASSERT(&newPaintInvalidationContainer == containerForPaintInvalidation())
; |
1565 | 1565 |
1566 const LayoutRect oldPaintInvalidationRect = previousPaintInvalidationRect(); | 1566 const LayoutRect oldPaintInvalidationRect = previousPaintInvalidationRect(); |
1567 const LayoutPoint oldPositionFromPaintInvalidationContainer = previousPositi
onFromPaintInvalidationContainer(); | 1567 const LayoutPoint oldPositionFromPaintInvalidationContainer = previousPositi
onFromPaintInvalidationContainer(); |
1568 setPreviousPaintInvalidationRect(boundsRectForPaintInvalidation(&newPaintInv
alidationContainer)); | 1568 setPreviousPaintInvalidationRect(boundsRectForPaintInvalidation(&newPaintInv
alidationContainer, &paintInvalidationState)); |
1569 setPreviousPositionFromPaintInvalidationContainer(RenderLayer::positionFromP
aintInvalidationContainer(this, &newPaintInvalidationContainer)); | 1569 setPreviousPositionFromPaintInvalidationContainer(RenderLayer::positionFromP
aintInvalidationContainer(this, &newPaintInvalidationContainer, &paintInvalidati
onState)); |
1570 | 1570 |
1571 // If we are set to do a full paint invalidation that means the RenderView w
ill be | 1571 // If we are set to do a full paint invalidation that means the RenderView w
ill be |
1572 // issue paint invalidations. We can then skip issuing of paint invalidation
s for the child | 1572 // issue paint invalidations. We can then skip issuing of paint invalidation
s for the child |
1573 // renderers as they'll be covered by the RenderView. | 1573 // renderers as they'll be covered by the RenderView. |
1574 if (view()->doingFullRepaint()) { | 1574 if (view()->doingFullRepaint()) { |
1575 LayoutState state(*this, isTableRow() ? LayoutSize() : locationOffset())
; | 1575 PaintInvalidationState childTreeWalkState(paintInvalidationState, *this,
newPaintInvalidationContainer); |
1576 RenderObject::invalidateTreeAfterLayout(newPaintInvalidationContainer); | 1576 RenderObject::invalidateTreeAfterLayout(childTreeWalkState); |
1577 return; | 1577 return; |
1578 } | 1578 } |
1579 | 1579 |
1580 if ((onlyNeededPositionedMovementLayout() && compositingState() != PaintsInt
oOwnBacking) | 1580 if ((onlyNeededPositionedMovementLayout() && compositingState() != PaintsInt
oOwnBacking) |
1581 || (shouldDoFullPaintInvalidationIfSelfPaintingLayer() | 1581 || (shouldDoFullPaintInvalidationIfSelfPaintingLayer() |
1582 && hasLayer() | 1582 && hasLayer() |
1583 && layer()->isSelfPaintingLayer())) { | 1583 && layer()->isSelfPaintingLayer())) { |
1584 setShouldDoFullPaintInvalidationAfterLayout(true); | 1584 setShouldDoFullPaintInvalidationAfterLayout(true); |
1585 } | 1585 } |
1586 | 1586 |
1587 if (!invalidatePaintIfNeeded(&newPaintInvalidationContainer, oldPaintInvalid
ationRect, oldPositionFromPaintInvalidationContainer)) | 1587 if (!invalidatePaintIfNeeded(&newPaintInvalidationContainer, oldPaintInvalid
ationRect, oldPositionFromPaintInvalidationContainer)) |
1588 invalidatePaintForOverflowIfNeeded(); | 1588 invalidatePaintForOverflowIfNeeded(); |
1589 | 1589 |
1590 // Issue paint invalidations for any scrollbars if there is a scrollable are
a for this renderer. | 1590 // Issue paint invalidations for any scrollbars if there is a scrollable are
a for this renderer. |
1591 if (enclosingLayer()) { | 1591 if (enclosingLayer()) { |
1592 if (RenderLayerScrollableArea* area = enclosingLayer()->scrollableArea()
) { | 1592 if (RenderLayerScrollableArea* area = enclosingLayer()->scrollableArea()
) { |
1593 if (area->hasVerticalBarDamage()) | 1593 if (area->hasVerticalBarDamage()) |
1594 invalidatePaintRectangle(area->verticalBarDamage()); | 1594 invalidatePaintRectangle(area->verticalBarDamage()); |
1595 if (area->hasHorizontalBarDamage()) | 1595 if (area->hasHorizontalBarDamage()) |
1596 invalidatePaintRectangle(area->horizontalBarDamage()); | 1596 invalidatePaintRectangle(area->horizontalBarDamage()); |
1597 area->resetScrollbarDamage(); | 1597 area->resetScrollbarDamage(); |
1598 } | 1598 } |
1599 } | 1599 } |
1600 | 1600 |
1601 // FIXME: LayoutState should be enabled for other paint invalidation contain
ers than the RenderView. crbug.com/363834 | 1601 PaintInvalidationState childTreeWalkState(paintInvalidationState, *this, new
PaintInvalidationContainer); |
1602 if (establishesNewPaintInvalidationContainer && !isRenderView()) { | 1602 RenderObject::invalidateTreeAfterLayout(childTreeWalkState); |
1603 ForceHorriblySlowRectMapping slowRectMapping(*this); | |
1604 RenderObject::invalidateTreeAfterLayout(newPaintInvalidationContainer); | |
1605 } else { | |
1606 // FIXME: This concept of a tree walking state for fast lookups should b
e generalized away from | |
1607 // just layout. | |
1608 // FIXME: Table rows shouldn't be special-cased. | |
1609 LayoutState state(*this, isTableRow() ? LayoutSize() : locationOffset())
; | |
1610 RenderObject::invalidateTreeAfterLayout(newPaintInvalidationContainer); | |
1611 } | |
1612 } | 1603 } |
1613 | 1604 |
1614 bool RenderBox::pushContentsClip(PaintInfo& paintInfo, const LayoutPoint& accumu
latedOffset, ContentsClipBehavior contentsClipBehavior) | 1605 bool RenderBox::pushContentsClip(PaintInfo& paintInfo, const LayoutPoint& accumu
latedOffset, ContentsClipBehavior contentsClipBehavior) |
1615 { | 1606 { |
1616 if (paintInfo.phase == PaintPhaseBlockBackground || paintInfo.phase == Paint
PhaseSelfOutline || paintInfo.phase == PaintPhaseMask) | 1607 if (paintInfo.phase == PaintPhaseBlockBackground || paintInfo.phase == Paint
PhaseSelfOutline || paintInfo.phase == PaintPhaseMask) |
1617 return false; | 1608 return false; |
1618 | 1609 |
1619 bool isControlClip = hasControlClip(); | 1610 bool isControlClip = hasControlClip(); |
1620 bool isOverflowClip = hasOverflowClip() && !layer()->isSelfPaintingLayer(); | 1611 bool isOverflowClip = hasOverflowClip() && !layer()->isSelfPaintingLayer(); |
1621 | 1612 |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1782 if (!logicalHeightLength.isFixed()) { | 1773 if (!logicalHeightLength.isFixed()) { |
1783 LayoutUnit fillFallbackExtent = containingBlockStyle->isHorizontalWritin
gMode() ? view()->frameView()->visibleHeight() : view()->frameView()->visibleWid
th(); | 1774 LayoutUnit fillFallbackExtent = containingBlockStyle->isHorizontalWritin
gMode() ? view()->frameView()->visibleHeight() : view()->frameView()->visibleWid
th(); |
1784 LayoutUnit fillAvailableExtent = containingBlock()->availableLogicalHeig
ht(ExcludeMarginBorderPadding); | 1775 LayoutUnit fillAvailableExtent = containingBlock()->availableLogicalHeig
ht(ExcludeMarginBorderPadding); |
1785 return std::min(fillAvailableExtent, fillFallbackExtent); | 1776 return std::min(fillAvailableExtent, fillFallbackExtent); |
1786 } | 1777 } |
1787 | 1778 |
1788 // Use the content box logical height as specified by the style. | 1779 // Use the content box logical height as specified by the style. |
1789 return cb->adjustContentBoxLogicalHeightForBoxSizing(logicalHeightLength.val
ue()); | 1780 return cb->adjustContentBoxLogicalHeightForBoxSizing(logicalHeightLength.val
ue()); |
1790 } | 1781 } |
1791 | 1782 |
1792 void RenderBox::mapLocalToContainer(const RenderLayerModelObject* repaintContain
er, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed) co
nst | 1783 void RenderBox::mapLocalToContainer(const RenderLayerModelObject* repaintContain
er, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed, co
nst PaintInvalidationState* paintInvalidationState) const |
1793 { | 1784 { |
1794 if (repaintContainer == this) | 1785 if (repaintContainer == this) |
1795 return; | 1786 return; |
1796 | 1787 |
1797 if (RenderView* v = view()) { | 1788 if (paintInvalidationState && paintInvalidationState->canMapToContainer(repa
intContainer)) { |
1798 if (v->canMapUsingLayoutStateForContainer(repaintContainer)) { | 1789 LayoutSize offset = paintInvalidationState->paintOffset() + locationOffs
et(); |
1799 LayoutState* layoutState = v->layoutState(); | 1790 if (style()->hasInFlowPosition() && layer()) |
1800 LayoutSize offset = layoutState->paintOffset() + locationOffset(); | 1791 offset += layer()->offsetForInFlowPosition(); |
1801 if (style()->hasInFlowPosition() && layer()) | 1792 transformState.move(offset); |
1802 offset += layer()->offsetForInFlowPosition(); | 1793 return; |
1803 transformState.move(offset); | |
1804 return; | |
1805 } | |
1806 } | 1794 } |
1807 | 1795 |
1808 bool containerSkipped; | 1796 bool containerSkipped; |
1809 RenderObject* o = container(repaintContainer, &containerSkipped); | 1797 RenderObject* o = container(repaintContainer, &containerSkipped); |
1810 if (!o) | 1798 if (!o) |
1811 return; | 1799 return; |
1812 | 1800 |
1813 bool isFixedPos = style()->position() == FixedPosition; | 1801 bool isFixedPos = style()->position() == FixedPosition; |
1814 bool hasTransform = hasLayer() && layer()->transform(); | 1802 bool hasTransform = hasLayer() && layer()->transform(); |
1815 // If this box has a transform, it acts as a fixed position container for fi
xed descendants, | 1803 // If this box has a transform, it acts as a fixed position container for fi
xed descendants, |
(...skipping 24 matching lines...) Expand all Loading... |
1840 return; | 1828 return; |
1841 } | 1829 } |
1842 | 1830 |
1843 mode &= ~ApplyContainerFlip; | 1831 mode &= ~ApplyContainerFlip; |
1844 | 1832 |
1845 o->mapLocalToContainer(repaintContainer, transformState, mode, wasFixed); | 1833 o->mapLocalToContainer(repaintContainer, transformState, mode, wasFixed); |
1846 } | 1834 } |
1847 | 1835 |
1848 void RenderBox::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, TransformState
& transformState) const | 1836 void RenderBox::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, TransformState
& transformState) const |
1849 { | 1837 { |
1850 // We don't expect to be called during layout. | |
1851 ASSERT(!view() || !view()->layoutStateCachedOffsetsEnabled()); | |
1852 | |
1853 bool isFixedPos = style()->position() == FixedPosition; | 1838 bool isFixedPos = style()->position() == FixedPosition; |
1854 bool hasTransform = hasLayer() && layer()->transform(); | 1839 bool hasTransform = hasLayer() && layer()->transform(); |
1855 if (hasTransform && !isFixedPos) { | 1840 if (hasTransform && !isFixedPos) { |
1856 // If this box has a transform, it acts as a fixed position container fo
r fixed descendants, | 1841 // If this box has a transform, it acts as a fixed position container fo
r fixed descendants, |
1857 // and may itself also be fixed position. So propagate 'fixed' up only i
f this box is fixed position. | 1842 // and may itself also be fixed position. So propagate 'fixed' up only i
f this box is fixed position. |
1858 mode &= ~IsFixed; | 1843 mode &= ~IsFixed; |
1859 } else if (isFixedPos) | 1844 } else if (isFixedPos) |
1860 mode |= IsFixed; | 1845 mode |= IsFixed; |
1861 | 1846 |
1862 RenderBoxModelObject::mapAbsoluteToLocalPoint(mode, transformState); | 1847 RenderBoxModelObject::mapAbsoluteToLocalPoint(mode, transformState); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1960 { | 1945 { |
1961 if (inlineBoxWrapper()) { | 1946 if (inlineBoxWrapper()) { |
1962 if (!documentBeingDestroyed()) | 1947 if (!documentBeingDestroyed()) |
1963 inlineBoxWrapper()->remove(); | 1948 inlineBoxWrapper()->remove(); |
1964 inlineBoxWrapper()->destroy(); | 1949 inlineBoxWrapper()->destroy(); |
1965 ASSERT(m_rareData); | 1950 ASSERT(m_rareData); |
1966 m_rareData->m_inlineBoxWrapper = 0; | 1951 m_rareData->m_inlineBoxWrapper = 0; |
1967 } | 1952 } |
1968 } | 1953 } |
1969 | 1954 |
1970 LayoutRect RenderBox::clippedOverflowRectForPaintInvalidation(const RenderLayerM
odelObject* paintInvalidationContainer) const | 1955 LayoutRect RenderBox::clippedOverflowRectForPaintInvalidation(const RenderLayerM
odelObject* paintInvalidationContainer, const PaintInvalidationState* paintInval
idationState) const |
1971 { | 1956 { |
1972 if (style()->visibility() != VISIBLE && enclosingLayer()->subtreeIsInvisible
()) | 1957 if (style()->visibility() != VISIBLE && enclosingLayer()->subtreeIsInvisible
()) |
1973 return LayoutRect(); | 1958 return LayoutRect(); |
1974 | 1959 |
1975 LayoutRect r = visualOverflowRect(); | 1960 LayoutRect r = visualOverflowRect(); |
1976 mapRectToPaintInvalidationBacking(paintInvalidationContainer, r); | 1961 mapRectToPaintInvalidationBacking(paintInvalidationContainer, r, paintInvali
dationState); |
1977 return r; | 1962 return r; |
1978 } | 1963 } |
1979 | 1964 |
1980 void RenderBox::mapRectToPaintInvalidationBacking(const RenderLayerModelObject*
paintInvalidationContainer, LayoutRect& rect, bool fixed) const | 1965 void RenderBox::mapRectToPaintInvalidationBacking(const RenderLayerModelObject*
paintInvalidationContainer, LayoutRect& rect, bool fixed, const PaintInvalidatio
nState* paintInvalidationState) const |
1981 { | 1966 { |
1982 // The rect we compute at each step is shifted by our x/y offset in the pare
nt container's coordinate space. | 1967 // The rect we compute at each step is shifted by our x/y offset in the pare
nt container's coordinate space. |
1983 // Only when we cross a writing mode boundary will we have to possibly flipF
orWritingMode (to convert into a more appropriate | 1968 // Only when we cross a writing mode boundary will we have to possibly flipF
orWritingMode (to convert into a more appropriate |
1984 // offset corner for the enclosing container). This allows for a fully RL o
r BT document to repaint | 1969 // offset corner for the enclosing container). This allows for a fully RL o
r BT document to repaint |
1985 // properly even during layout, since the rect remains flipped all the way u
ntil the end. | 1970 // properly even during layout, since the rect remains flipped all the way u
ntil the end. |
1986 // | 1971 // |
1987 // RenderView::computeRectForRepaint then converts the rect to physical coor
dinates. We also convert to | 1972 // RenderView::computeRectForRepaint then converts the rect to physical coor
dinates. We also convert to |
1988 // physical when we hit a paintInvalidationContainer boundary. Therefore the
final rect returned is always in the | 1973 // physical when we hit a paintInvalidationContainer boundary. Therefore the
final rect returned is always in the |
1989 // physical coordinate space of the paintInvalidationContainer. | 1974 // physical coordinate space of the paintInvalidationContainer. |
1990 RenderStyle* styleToUse = style(); | 1975 RenderStyle* styleToUse = style(); |
1991 if (RenderView* v = view()) { | |
1992 // LayoutState is only valid for root-relative, non-fixed position repai
nting | |
1993 if (v->canMapUsingLayoutStateForContainer(paintInvalidationContainer) &&
styleToUse->position() != FixedPosition) { | |
1994 LayoutState* layoutState = v->layoutState(); | |
1995 | 1976 |
1996 if (layer() && layer()->transform()) | 1977 if (paintInvalidationState && paintInvalidationState->canMapToContainer(pain
tInvalidationContainer) && styleToUse->position() != FixedPosition) { |
1997 rect = layer()->transform()->mapRect(pixelSnappedIntRect(rect)); | 1978 if (layer() && layer()->transform()) |
| 1979 rect = layer()->transform()->mapRect(pixelSnappedIntRect(rect)); |
1998 | 1980 |
1999 // We can't trust the bits on RenderObject, because this might be ca
lled while re-resolving style. | 1981 // We can't trust the bits on RenderObject, because this might be called
while re-resolving style. |
2000 if (styleToUse->hasInFlowPosition() && layer()) | 1982 if (styleToUse->hasInFlowPosition() && layer()) |
2001 rect.move(layer()->offsetForInFlowPosition()); | 1983 rect.move(layer()->offsetForInFlowPosition()); |
2002 | 1984 |
2003 rect.moveBy(location()); | 1985 rect.moveBy(location()); |
2004 rect.move(layoutState->paintOffset()); | 1986 rect.move(paintInvalidationState->paintOffset()); |
2005 if (layoutState->isClipped()) | 1987 if (paintInvalidationState->isClipped()) |
2006 rect.intersect(layoutState->clipRect()); | 1988 rect.intersect(paintInvalidationState->clipRect()); |
2007 return; | 1989 return; |
2008 } | |
2009 } | 1990 } |
2010 | 1991 |
2011 if (hasReflection()) | 1992 if (hasReflection()) |
2012 rect.unite(reflectedRect(rect)); | 1993 rect.unite(reflectedRect(rect)); |
2013 | 1994 |
2014 if (paintInvalidationContainer == this) { | 1995 if (paintInvalidationContainer == this) { |
2015 if (paintInvalidationContainer->style()->isFlippedBlocksWritingMode()) | 1996 if (paintInvalidationContainer->style()->isFlippedBlocksWritingMode()) |
2016 flipForWritingMode(rect); | 1997 flipForWritingMode(rect); |
2017 return; | 1998 return; |
2018 } | 1999 } |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2067 return; | 2048 return; |
2068 } | 2049 } |
2069 | 2050 |
2070 if (containerSkipped) { | 2051 if (containerSkipped) { |
2071 // If the paintInvalidationContainer is below o, then we need to map the
rect into paintInvalidationContainer's coordinates. | 2052 // If the paintInvalidationContainer is below o, then we need to map the
rect into paintInvalidationContainer's coordinates. |
2072 LayoutSize containerOffset = paintInvalidationContainer->offsetFromAnces
torContainer(o); | 2053 LayoutSize containerOffset = paintInvalidationContainer->offsetFromAnces
torContainer(o); |
2073 rect.move(-containerOffset); | 2054 rect.move(-containerOffset); |
2074 return; | 2055 return; |
2075 } | 2056 } |
2076 | 2057 |
2077 o->mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, fixed
); | 2058 o->mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, fixed
, paintInvalidationState); |
2078 } | 2059 } |
2079 | 2060 |
2080 void RenderBox::invalidatePaintForOverhangingFloats(bool) | 2061 void RenderBox::invalidatePaintForOverhangingFloats(bool) |
2081 { | 2062 { |
2082 } | 2063 } |
2083 | 2064 |
2084 void RenderBox::updateLogicalWidth() | 2065 void RenderBox::updateLogicalWidth() |
2085 { | 2066 { |
2086 LogicalExtentComputedValues computedValues; | 2067 LogicalExtentComputedValues computedValues; |
2087 computeLogicalWidth(computedValues); | 2068 computeLogicalWidth(computedValues); |
(...skipping 2578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4666 return 0; | 4647 return 0; |
4667 | 4648 |
4668 if (!layoutState && !flowThreadContainingBlock()) | 4649 if (!layoutState && !flowThreadContainingBlock()) |
4669 return 0; | 4650 return 0; |
4670 | 4651 |
4671 RenderBlock* containerBlock = containingBlock(); | 4652 RenderBlock* containerBlock = containingBlock(); |
4672 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); | 4653 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); |
4673 } | 4654 } |
4674 | 4655 |
4675 } // namespace WebCore | 4656 } // namespace WebCore |
OLD | NEW |