Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: Source/core/rendering/RenderBox.cpp

Issue 380583003: Revert of Revert of Divorce PaintInvalidationState from LayoutState (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderBox.h ('k') | Source/core/rendering/RenderBoxModelObject.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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, oldPaintInvalida tionRect, oldPositionFromPaintInvalidationContainer)) 1587 if (!invalidatePaintIfNeeded(newPaintInvalidationContainer, oldPaintInvalida tionRect, 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
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
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
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
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
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
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderBox.h ('k') | Source/core/rendering/RenderBoxModelObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698