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) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv
ed. |
7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 1286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1297 pos.move(box->locationOffset()); // FIXME: Snap offsets? crbug.c
om/350474 | 1297 pos.move(box->locationOffset()); // FIXME: Snap offsets? crbug.c
om/350474 |
1298 box->addFocusRingRects(rects, flooredIntPoint(pos), paintContain
er); | 1298 box->addFocusRingRects(rects, flooredIntPoint(pos), paintContain
er); |
1299 } | 1299 } |
1300 } else { | 1300 } else { |
1301 current->addFocusRingRects(rects, additionalOffset, paintContainer); | 1301 current->addFocusRingRects(rects, additionalOffset, paintContainer); |
1302 } | 1302 } |
1303 } | 1303 } |
1304 } | 1304 } |
1305 | 1305 |
1306 // FIXME: In repaint-after-layout, we should be able to change the logic to remo
ve the need for this function. See crbug.com/368416. | 1306 // FIXME: In repaint-after-layout, we should be able to change the logic to remo
ve the need for this function. See crbug.com/368416. |
1307 LayoutPoint RenderObject::positionFromPaintInvalidationContainer(const RenderLay
erModelObject* paintInvalidationContainer) const | 1307 LayoutPoint RenderObject::positionFromPaintInvalidationContainer(const RenderLay
erModelObject* paintInvalidationContainer, const InvalidationTreeWalkState* inva
lidationTreeWalkState) const |
1308 { | 1308 { |
1309 // FIXME: This assert should be re-enabled when we move paint invalidation t
o after compositing update. crbug.com/360286 | 1309 // FIXME: This assert should be re-enabled when we move paint invalidation t
o after compositing update. crbug.com/360286 |
1310 // ASSERT(containerForPaintInvalidation() == paintInvalidationContainer); | 1310 // ASSERT(containerForPaintInvalidation() == paintInvalidationContainer); |
1311 | 1311 |
1312 LayoutPoint offset = isBox() ? toRenderBox(this)->location() : LayoutPoint()
; | 1312 LayoutPoint offset = isBox() ? toRenderBox(this)->location() : LayoutPoint()
; |
1313 if (paintInvalidationContainer == this) | 1313 if (paintInvalidationContainer == this) |
1314 return offset; | 1314 return offset; |
1315 | 1315 |
1316 return roundedIntPoint(localToContainerPoint(offset, paintInvalidationContai
ner)); | 1316 return roundedIntPoint(localToContainerPoint(offset, paintInvalidationContai
ner, 0, 0, invalidationTreeWalkState)); |
1317 } | 1317 } |
1318 | 1318 |
1319 IntRect RenderObject::absoluteBoundingBoxRect() const | 1319 IntRect RenderObject::absoluteBoundingBoxRect() const |
1320 { | 1320 { |
1321 Vector<FloatQuad> quads; | 1321 Vector<FloatQuad> quads; |
1322 absoluteQuads(quads); | 1322 absoluteQuads(quads); |
1323 | 1323 |
1324 size_t n = quads.size(); | 1324 size_t n = quads.size(); |
1325 if (!n) | 1325 if (!n) |
1326 return IntRect(); | 1326 return IntRect(); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1452 } | 1452 } |
1453 | 1453 |
1454 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForPaintInvali
dationInfo(const IntRect& rect, const String& invalidationReason) | 1454 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForPaintInvali
dationInfo(const IntRect& rect, const String& invalidationReason) |
1455 { | 1455 { |
1456 TracedValue value; | 1456 TracedValue value; |
1457 addJsonObjectForRect(value, "rect", rect); | 1457 addJsonObjectForRect(value, "rect", rect); |
1458 value.setString("invalidation_reason", invalidationReason); | 1458 value.setString("invalidation_reason", invalidationReason); |
1459 return value.finish(); | 1459 return value.finish(); |
1460 } | 1460 } |
1461 | 1461 |
1462 LayoutRect RenderObject::computePaintInvalidationRect(const RenderLayerModelObje
ct* paintInvalidationContainer) const | 1462 LayoutRect RenderObject::computePaintInvalidationRect(const RenderLayerModelObje
ct* paintInvalidationContainer, const InvalidationTreeWalkState* invalidationTre
eWalkState) const |
1463 { | 1463 { |
1464 return clippedOverflowRectForPaintInvalidation(paintInvalidationContainer); | 1464 return clippedOverflowRectForPaintInvalidation(paintInvalidationContainer, i
nvalidationTreeWalkState); |
1465 } | 1465 } |
1466 | 1466 |
1467 void RenderObject::invalidatePaintUsingContainer(const RenderLayerModelObject* p
aintInvalidationContainer, const IntRect& r, InvalidationReason invalidationReas
on) const | 1467 void RenderObject::invalidatePaintUsingContainer(const RenderLayerModelObject* p
aintInvalidationContainer, const IntRect& r, InvalidationReason invalidationReas
on) const |
1468 { | 1468 { |
1469 if (r.isEmpty()) | 1469 if (r.isEmpty()) |
1470 return; | 1470 return; |
1471 | 1471 |
1472 // FIXME: This should be an assert, but editing/selection can trigger this c
ase to invalidate | 1472 // FIXME: This should be an assert, but editing/selection can trigger this c
ase to invalidate |
1473 // the selection. crbug.com/368140. | 1473 // the selection. crbug.com/368140. |
1474 if (!isRooted()) | 1474 if (!isRooted()) |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1513 return; // Don't invalidate paints if we're printing. | 1513 return; // Don't invalidate paints if we're printing. |
1514 | 1514 |
1515 // FIXME: really, we're in the paint invalidation phase here, and the follow
ing queries are legal. | 1515 // FIXME: really, we're in the paint invalidation phase here, and the follow
ing queries are legal. |
1516 // Until those states are fully fledged, I'll just disable the ASSERTS. | 1516 // Until those states are fully fledged, I'll just disable the ASSERTS. |
1517 DisableCompositingQueryAsserts disabler; | 1517 DisableCompositingQueryAsserts disabler; |
1518 const RenderLayerModelObject* paintInvalidationContainer = containerForPaint
Invalidation(); | 1518 const RenderLayerModelObject* paintInvalidationContainer = containerForPaint
Invalidation(); |
1519 LayoutRect paintInvalidationRect = boundsRectForPaintInvalidation(paintInval
idationContainer); | 1519 LayoutRect paintInvalidationRect = boundsRectForPaintInvalidation(paintInval
idationContainer); |
1520 invalidatePaintUsingContainer(paintInvalidationContainer, pixelSnappedIntRec
t(paintInvalidationRect), InvalidationPaint); | 1520 invalidatePaintUsingContainer(paintInvalidationContainer, pixelSnappedIntRec
t(paintInvalidationRect), InvalidationPaint); |
1521 } | 1521 } |
1522 | 1522 |
1523 LayoutRect RenderObject::boundsRectForPaintInvalidation(const RenderLayerModelOb
ject* paintInvalidationContainer) const | 1523 LayoutRect RenderObject::boundsRectForPaintInvalidation(const RenderLayerModelOb
ject* paintInvalidationContainer, const InvalidationTreeWalkState* invalidationT
reeWalkState) const |
1524 { | 1524 { |
1525 if (!paintInvalidationContainer) | 1525 if (!paintInvalidationContainer) |
1526 return computePaintInvalidationRect(paintInvalidationContainer); | 1526 return computePaintInvalidationRect(paintInvalidationContainer, invalida
tionTreeWalkState); |
1527 return RenderLayer::computePaintInvalidationRect(this, paintInvalidationCont
ainer->layer()); | 1527 return RenderLayer::computePaintInvalidationRect(this, paintInvalidationCont
ainer->layer(), invalidationTreeWalkState); |
1528 } | 1528 } |
1529 | 1529 |
1530 void RenderObject::invalidatePaintRectangle(const LayoutRect& r) const | 1530 void RenderObject::invalidatePaintRectangle(const LayoutRect& r) const |
1531 { | 1531 { |
1532 if (!isRooted()) | 1532 if (!isRooted()) |
1533 return; | 1533 return; |
1534 | 1534 |
1535 if (view()->document().printing()) | 1535 if (view()->document().printing()) |
1536 return; // Don't invalidate paints if we're printing. | 1536 return; // Don't invalidate paints if we're printing. |
1537 | 1537 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1574 return "layer"; | 1574 return "layer"; |
1575 case InvalidationPaint: | 1575 case InvalidationPaint: |
1576 return "invalidate paint"; | 1576 return "invalidate paint"; |
1577 case InvalidationPaintRectangle: | 1577 case InvalidationPaintRectangle: |
1578 return "invalidate paint rectangle"; | 1578 return "invalidate paint rectangle"; |
1579 } | 1579 } |
1580 ASSERT_NOT_REACHED(); | 1580 ASSERT_NOT_REACHED(); |
1581 return ""; | 1581 return ""; |
1582 } | 1582 } |
1583 | 1583 |
1584 void RenderObject::invalidateTreeAfterLayout(const RenderLayerModelObject& paint
InvalidationContainer) | 1584 void RenderObject::invalidateTreeAfterLayout(const InvalidationTreeWalkState& in
validationTreeWalkState) |
1585 { | 1585 { |
1586 // If we didn't need paint invalidation then our children don't need as well
. | 1586 // If we didn't need paint invalidation then our children don't need as well
. |
1587 // Skip walking down the tree as everything should be fine below us. | 1587 // Skip walking down the tree as everything should be fine below us. |
1588 if (!shouldCheckForPaintInvalidationAfterLayout()) | 1588 if (!shouldCheckForPaintInvalidationAfterLayout()) |
1589 return; | 1589 return; |
1590 | 1590 |
1591 clearPaintInvalidationState(); | 1591 clearPaintInvalidationState(); |
1592 | 1592 |
1593 for (RenderObject* child = slowFirstChild(); child; child = child->nextSibli
ng()) { | 1593 for (RenderObject* child = slowFirstChild(); child; child = child->nextSibli
ng()) { |
1594 if (!child->isOutOfFlowPositioned()) | 1594 if (!child->isOutOfFlowPositioned()) |
1595 child->invalidateTreeAfterLayout(paintInvalidationContainer); | 1595 child->invalidateTreeAfterLayout(invalidationTreeWalkState); |
1596 } | 1596 } |
1597 } | 1597 } |
1598 | 1598 |
1599 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForOldAndNewRe
cts(const LayoutRect& oldRect, const LayoutRect& newRect) | 1599 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForOldAndNewRe
cts(const LayoutRect& oldRect, const LayoutRect& newRect) |
1600 { | 1600 { |
1601 TracedValue value; | 1601 TracedValue value; |
1602 addJsonObjectForRect(value, "old", oldRect); | 1602 addJsonObjectForRect(value, "old", oldRect); |
1603 addJsonObjectForRect(value, "new", newRect); | 1603 addJsonObjectForRect(value, "new", newRect); |
1604 return value.finish(); | 1604 return value.finish(); |
1605 } | 1605 } |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1703 { | 1703 { |
1704 if (shouldInvalidateOverflowForPaint()) | 1704 if (shouldInvalidateOverflowForPaint()) |
1705 invalidatePaintForOverflow(); | 1705 invalidatePaintForOverflow(); |
1706 } | 1706 } |
1707 | 1707 |
1708 bool RenderObject::checkForPaintInvalidation() const | 1708 bool RenderObject::checkForPaintInvalidation() const |
1709 { | 1709 { |
1710 return !document().view()->needsFullPaintInvalidation() && everHadLayout(); | 1710 return !document().view()->needsFullPaintInvalidation() && everHadLayout(); |
1711 } | 1711 } |
1712 | 1712 |
1713 LayoutRect RenderObject::rectWithOutlineForPaintInvalidation(const RenderLayerMo
delObject* paintInvalidationContainer, LayoutUnit outlineWidth) const | 1713 LayoutRect RenderObject::rectWithOutlineForPaintInvalidation(const RenderLayerMo
delObject* paintInvalidationContainer, LayoutUnit outlineWidth, const Invalidati
onTreeWalkState* invalidationTreeWalkState) const |
1714 { | 1714 { |
1715 LayoutRect r(clippedOverflowRectForPaintInvalidation(paintInvalidationContai
ner)); | 1715 LayoutRect r(clippedOverflowRectForPaintInvalidation(paintInvalidationContai
ner, invalidationTreeWalkState)); |
1716 r.inflate(outlineWidth); | 1716 r.inflate(outlineWidth); |
1717 return r; | 1717 return r; |
1718 } | 1718 } |
1719 | 1719 |
1720 LayoutRect RenderObject::clippedOverflowRectForPaintInvalidation(const RenderLay
erModelObject*) const | 1720 LayoutRect RenderObject::clippedOverflowRectForPaintInvalidation(const RenderLay
erModelObject*, const InvalidationTreeWalkState*) const |
1721 { | 1721 { |
1722 ASSERT_NOT_REACHED(); | 1722 ASSERT_NOT_REACHED(); |
1723 return LayoutRect(); | 1723 return LayoutRect(); |
1724 } | 1724 } |
1725 | 1725 |
1726 void RenderObject::mapRectToPaintInvalidationBacking(const RenderLayerModelObjec
t* paintInvalidationContainer, LayoutRect& rect, bool fixed) const | 1726 void RenderObject::mapRectToPaintInvalidationBacking(const RenderLayerModelObjec
t* paintInvalidationContainer, LayoutRect& rect, bool fixed, const InvalidationT
reeWalkState* invalidationTreeWalkState) const |
1727 { | 1727 { |
1728 if (paintInvalidationContainer == this) | 1728 if (paintInvalidationContainer == this) |
1729 return; | 1729 return; |
1730 | 1730 |
1731 if (RenderObject* o = parent()) { | 1731 if (RenderObject* o = parent()) { |
1732 if (o->isRenderBlockFlow()) { | 1732 if (o->isRenderBlockFlow()) { |
1733 RenderBlock* cb = toRenderBlock(o); | 1733 RenderBlock* cb = toRenderBlock(o); |
1734 if (cb->hasColumns()) | 1734 if (cb->hasColumns()) |
1735 cb->adjustRectForColumns(rect); | 1735 cb->adjustRectForColumns(rect); |
1736 } | 1736 } |
1737 | 1737 |
1738 if (o->hasOverflowClip()) { | 1738 if (o->hasOverflowClip()) { |
1739 RenderBox* boxParent = toRenderBox(o); | 1739 RenderBox* boxParent = toRenderBox(o); |
1740 boxParent->applyCachedClipAndScrollOffsetForRepaint(rect); | 1740 boxParent->applyCachedClipAndScrollOffsetForRepaint(rect); |
1741 if (rect.isEmpty()) | 1741 if (rect.isEmpty()) |
1742 return; | 1742 return; |
1743 } | 1743 } |
1744 | 1744 |
1745 o->mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, f
ixed); | 1745 o->mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, f
ixed, invalidationTreeWalkState); |
1746 } | 1746 } |
1747 } | 1747 } |
1748 | 1748 |
1749 void RenderObject::computeFloatRectForPaintInvalidation(const RenderLayerModelOb
ject*, FloatRect&, bool) const | 1749 void RenderObject::computeFloatRectForPaintInvalidation(const RenderLayerModelOb
ject*, FloatRect&, bool, const InvalidationTreeWalkState*) const |
1750 { | 1750 { |
1751 ASSERT_NOT_REACHED(); | 1751 ASSERT_NOT_REACHED(); |
1752 } | 1752 } |
1753 | 1753 |
1754 void RenderObject::dirtyLinesFromChangedChild(RenderObject*) | 1754 void RenderObject::dirtyLinesFromChangedChild(RenderObject*) |
1755 { | 1755 { |
1756 } | 1756 } |
1757 | 1757 |
1758 #ifndef NDEBUG | 1758 #ifndef NDEBUG |
1759 | 1759 |
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2296 } | 2296 } |
2297 | 2297 |
2298 FloatQuad RenderObject::absoluteToLocalQuad(const FloatQuad& quad, MapCoordinate
sFlags mode) const | 2298 FloatQuad RenderObject::absoluteToLocalQuad(const FloatQuad& quad, MapCoordinate
sFlags mode) const |
2299 { | 2299 { |
2300 TransformState transformState(TransformState::UnapplyInverseTransformDirecti
on, quad.boundingBox().center(), quad); | 2300 TransformState transformState(TransformState::UnapplyInverseTransformDirecti
on, quad.boundingBox().center(), quad); |
2301 mapAbsoluteToLocalPoint(mode, transformState); | 2301 mapAbsoluteToLocalPoint(mode, transformState); |
2302 transformState.flatten(); | 2302 transformState.flatten(); |
2303 return transformState.lastPlanarQuad(); | 2303 return transformState.lastPlanarQuad(); |
2304 } | 2304 } |
2305 | 2305 |
2306 void RenderObject::mapLocalToContainer(const RenderLayerModelObject* paintInvali
dationContainer, TransformState& transformState, MapCoordinatesFlags mode, bool*
wasFixed) const | 2306 void RenderObject::mapLocalToContainer(const RenderLayerModelObject* paintInvali
dationContainer, TransformState& transformState, MapCoordinatesFlags mode, bool*
wasFixed, const InvalidationTreeWalkState* invalidationTreeWalkState) const |
2307 { | 2307 { |
2308 if (paintInvalidationContainer == this) | 2308 if (paintInvalidationContainer == this) |
2309 return; | 2309 return; |
2310 | 2310 |
2311 RenderObject* o = parent(); | 2311 RenderObject* o = parent(); |
2312 if (!o) | 2312 if (!o) |
2313 return; | 2313 return; |
2314 | 2314 |
2315 // FIXME: this should call offsetFromContainer to share code, but I'm not su
re it's ever called. | 2315 // FIXME: this should call offsetFromContainer to share code, but I'm not su
re it's ever called. |
2316 LayoutPoint centerPoint = roundedLayoutPoint(transformState.mappedPoint()); | 2316 LayoutPoint centerPoint = roundedLayoutPoint(transformState.mappedPoint()); |
2317 if (mode & ApplyContainerFlip && o->isBox()) { | 2317 if (mode & ApplyContainerFlip && o->isBox()) { |
2318 if (o->style()->isFlippedBlocksWritingMode()) | 2318 if (o->style()->isFlippedBlocksWritingMode()) |
2319 transformState.move(toRenderBox(o)->flipForWritingModeIncludingColum
ns(roundedLayoutPoint(transformState.mappedPoint())) - centerPoint); | 2319 transformState.move(toRenderBox(o)->flipForWritingModeIncludingColum
ns(roundedLayoutPoint(transformState.mappedPoint())) - centerPoint); |
2320 mode &= ~ApplyContainerFlip; | 2320 mode &= ~ApplyContainerFlip; |
2321 } | 2321 } |
2322 | 2322 |
2323 transformState.move(o->columnOffset(roundedLayoutPoint(transformState.mapped
Point()))); | 2323 transformState.move(o->columnOffset(roundedLayoutPoint(transformState.mapped
Point()))); |
2324 | 2324 |
2325 if (o->hasOverflowClip()) | 2325 if (o->hasOverflowClip()) |
2326 transformState.move(-toRenderBox(o)->scrolledContentOffset()); | 2326 transformState.move(-toRenderBox(o)->scrolledContentOffset()); |
2327 | 2327 |
2328 o->mapLocalToContainer(paintInvalidationContainer, transformState, mode, was
Fixed); | 2328 o->mapLocalToContainer(paintInvalidationContainer, transformState, mode, was
Fixed, invalidationTreeWalkState); |
2329 } | 2329 } |
2330 | 2330 |
2331 const RenderObject* RenderObject::pushMappingToContainer(const RenderLayerModelO
bject* ancestorToStopAt, RenderGeometryMap& geometryMap) const | 2331 const RenderObject* RenderObject::pushMappingToContainer(const RenderLayerModelO
bject* ancestorToStopAt, RenderGeometryMap& geometryMap) const |
2332 { | 2332 { |
2333 ASSERT_UNUSED(ancestorToStopAt, ancestorToStopAt != this); | 2333 ASSERT_UNUSED(ancestorToStopAt, ancestorToStopAt != this); |
2334 | 2334 |
2335 RenderObject* container = parent(); | 2335 RenderObject* container = parent(); |
2336 if (!container) | 2336 if (!container) |
2337 return 0; | 2337 return 0; |
2338 | 2338 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2389 { | 2389 { |
2390 // Track the point at the center of the quad's bounding box. As mapLocalToCo
ntainer() calls offsetFromContainer(), | 2390 // Track the point at the center of the quad's bounding box. As mapLocalToCo
ntainer() calls offsetFromContainer(), |
2391 // it will use that point as the reference point to decide which column's tr
ansform to apply in multiple-column blocks. | 2391 // it will use that point as the reference point to decide which column's tr
ansform to apply in multiple-column blocks. |
2392 TransformState transformState(TransformState::ApplyTransformDirection, local
Quad.boundingBox().center(), localQuad); | 2392 TransformState transformState(TransformState::ApplyTransformDirection, local
Quad.boundingBox().center(), localQuad); |
2393 mapLocalToContainer(paintInvalidationContainer, transformState, mode | Apply
ContainerFlip | UseTransforms, wasFixed); | 2393 mapLocalToContainer(paintInvalidationContainer, transformState, mode | Apply
ContainerFlip | UseTransforms, wasFixed); |
2394 transformState.flatten(); | 2394 transformState.flatten(); |
2395 | 2395 |
2396 return transformState.lastPlanarQuad(); | 2396 return transformState.lastPlanarQuad(); |
2397 } | 2397 } |
2398 | 2398 |
2399 FloatPoint RenderObject::localToContainerPoint(const FloatPoint& localPoint, con
st RenderLayerModelObject* paintInvalidationContainer, MapCoordinatesFlags mode,
bool* wasFixed) const | 2399 FloatPoint RenderObject::localToContainerPoint(const FloatPoint& localPoint, con
st RenderLayerModelObject* paintInvalidationContainer, MapCoordinatesFlags mode,
bool* wasFixed, const InvalidationTreeWalkState* invalidationTreeWalkState) con
st |
2400 { | 2400 { |
2401 TransformState transformState(TransformState::ApplyTransformDirection, local
Point); | 2401 TransformState transformState(TransformState::ApplyTransformDirection, local
Point); |
2402 mapLocalToContainer(paintInvalidationContainer, transformState, mode | Apply
ContainerFlip | UseTransforms, wasFixed); | 2402 mapLocalToContainer(paintInvalidationContainer, transformState, mode | Apply
ContainerFlip | UseTransforms, wasFixed, invalidationTreeWalkState); |
2403 transformState.flatten(); | 2403 transformState.flatten(); |
2404 | 2404 |
2405 return transformState.lastPlanarPoint(); | 2405 return transformState.lastPlanarPoint(); |
2406 } | 2406 } |
2407 | 2407 |
2408 LayoutSize RenderObject::offsetFromContainer(const RenderObject* o, const Layout
Point& point, bool* offsetDependsOnPoint) const | 2408 LayoutSize RenderObject::offsetFromContainer(const RenderObject* o, const Layout
Point& point, bool* offsetDependsOnPoint) const |
2409 { | 2409 { |
2410 ASSERT(o == container()); | 2410 ASSERT(o == container()); |
2411 | 2411 |
2412 LayoutSize offset = o->columnOffset(point); | 2412 LayoutSize offset = o->columnOffset(point); |
(...skipping 1018 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3431 { | 3431 { |
3432 if (object1) { | 3432 if (object1) { |
3433 const WebCore::RenderObject* root = object1; | 3433 const WebCore::RenderObject* root = object1; |
3434 while (root->parent()) | 3434 while (root->parent()) |
3435 root = root->parent(); | 3435 root = root->parent(); |
3436 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); | 3436 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); |
3437 } | 3437 } |
3438 } | 3438 } |
3439 | 3439 |
3440 #endif | 3440 #endif |
OLD | NEW |