| Index: Source/core/rendering/RenderBlock.cpp
|
| diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp
|
| index d40b5f2007fe7139c02b1d7c0ba11b90dbfece59..93a788b70a5805679317cb27e23695e7653d1ab0 100644
|
| --- a/Source/core/rendering/RenderBlock.cpp
|
| +++ b/Source/core/rendering/RenderBlock.cpp
|
| @@ -975,8 +975,8 @@ void RenderBlock::deleteLineBoxTree()
|
| const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
|
| FloatingObjectSetIterator end = floatingObjectSet.end();
|
| for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it != end; ++it) {
|
| - ASSERT(!((*it)->m_originatingLine) || (*it)->m_originatingLine->renderer() == this);
|
| - (*it)->m_originatingLine = 0;
|
| + ASSERT(!((*it)->originatingLine()) || (*it)->originatingLine()->renderer() == this);
|
| + (*it)->setOriginatingLine(0);
|
| }
|
| }
|
| m_lineBoxes.deleteLineBoxTree();
|
| @@ -1783,7 +1783,7 @@ void RenderBlock::addOverflowFromFloats()
|
| for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it != end; ++it) {
|
| FloatingObject* r = *it;
|
| if (r->isDescendant())
|
| - addOverflowFromChild(r->m_renderer, IntSize(xPositionForFloatIncludingMargin(r), yPositionForFloatIncludingMargin(r)));
|
| + addOverflowFromChild(r->renderer(), IntSize(xPositionForFloatIncludingMargin(r), yPositionForFloatIncludingMargin(r)));
|
| }
|
| }
|
|
|
| @@ -2877,9 +2877,9 @@ void RenderBlock::repaintOverhangingFloats(bool paintAllDescendants)
|
| // Only repaint the object if it is overhanging, is not in its own layer, and
|
| // is our responsibility to paint (m_shouldPaint is set). When paintAllDescendants is true, the latter
|
| // condition is replaced with being a descendant of us.
|
| - if (logicalBottomForFloat(r) > logicalHeight() && ((paintAllDescendants && r->m_renderer->isDescendantOf(this)) || r->shouldPaint()) && !r->m_renderer->hasSelfPaintingLayer()) {
|
| - r->m_renderer->repaint();
|
| - r->m_renderer->repaintOverhangingFloats(false);
|
| + if (logicalBottomForFloat(r) > logicalHeight() && ((paintAllDescendants && r->renderer()->isDescendantOf(this)) || r->shouldPaint()) && !r->renderer()->hasSelfPaintingLayer()) {
|
| + r->renderer()->repaint();
|
| + r->renderer()->repaintOverhangingFloats(false);
|
| }
|
| }
|
| }
|
| @@ -3240,20 +3240,21 @@ void RenderBlock::paintFloats(PaintInfo& paintInfo, const LayoutPoint& paintOffs
|
| for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it != end; ++it) {
|
| FloatingObject* r = *it;
|
| // Only paint the object if our m_shouldPaint flag is set.
|
| - if (r->shouldPaint() && !r->m_renderer->hasSelfPaintingLayer()) {
|
| + if (r->shouldPaint() && !r->renderer()->hasSelfPaintingLayer()) {
|
| PaintInfo currentPaintInfo(paintInfo);
|
| currentPaintInfo.phase = preservePhase ? paintInfo.phase : PaintPhaseBlockBackground;
|
| - LayoutPoint childPoint = flipFloatForWritingModeForChild(r, LayoutPoint(paintOffset.x() + xPositionForFloatIncludingMargin(r) - r->m_renderer->x(), paintOffset.y() + yPositionForFloatIncludingMargin(r) - r->m_renderer->y()));
|
| - r->m_renderer->paint(currentPaintInfo, childPoint);
|
| + // FIXME: LayoutPoint version of xPositionForFloatIncludingMargin would make this much cleaner.
|
| + LayoutPoint childPoint = flipFloatForWritingModeForChild(r, LayoutPoint(paintOffset.x() + xPositionForFloatIncludingMargin(r) - r->renderer()->x(), paintOffset.y() + yPositionForFloatIncludingMargin(r) - r->renderer()->y()));
|
| + r->renderer()->paint(currentPaintInfo, childPoint);
|
| if (!preservePhase) {
|
| currentPaintInfo.phase = PaintPhaseChildBlockBackgrounds;
|
| - r->m_renderer->paint(currentPaintInfo, childPoint);
|
| + r->renderer()->paint(currentPaintInfo, childPoint);
|
| currentPaintInfo.phase = PaintPhaseFloat;
|
| - r->m_renderer->paint(currentPaintInfo, childPoint);
|
| + r->renderer()->paint(currentPaintInfo, childPoint);
|
| currentPaintInfo.phase = PaintPhaseForeground;
|
| - r->m_renderer->paint(currentPaintInfo, childPoint);
|
| + r->renderer()->paint(currentPaintInfo, childPoint);
|
| currentPaintInfo.phase = PaintPhaseOutline;
|
| - r->m_renderer->paint(currentPaintInfo, childPoint);
|
| + r->renderer()->paint(currentPaintInfo, childPoint);
|
| }
|
| }
|
| }
|
| @@ -3467,7 +3468,7 @@ GapRects RenderBlock::selectionGaps(RenderBlock* rootBlock, const LayoutPoint& r
|
| FloatingObject* r = *it;
|
| LayoutRect floatBox(offsetFromRootBlock.width() + xPositionForFloatIncludingMargin(r),
|
| offsetFromRootBlock.height() + yPositionForFloatIncludingMargin(r),
|
| - r->m_renderer->width(), r->m_renderer->height());
|
| + r->renderer()->width(), r->renderer()->height());
|
| rootBlock->flipForWritingMode(floatBox);
|
| floatBox.move(rootBlockPhysicalPosition.x(), rootBlockPhysicalPosition.y());
|
| paintInfo->context->clipOut(pixelSnappedIntRect(floatBox));
|
| @@ -3913,7 +3914,7 @@ RenderBlock::FloatingObject* RenderBlock::insertFloatingObject(RenderBox* o)
|
|
|
| newObj->setShouldPaint(!o->hasSelfPaintingLayer()); // If a layer exists, the float will paint itself. Otherwise someone else will.
|
| newObj->setIsDescendant(true);
|
| - newObj->m_renderer = o;
|
| + newObj->setRenderer(o);
|
|
|
| m_floatingObjects->add(newObj);
|
|
|
| @@ -3940,19 +3941,19 @@ void RenderBlock::removeFloatingObject(RenderBox* o)
|
| // accomplished by pretending they have a height of 1.
|
| logicalBottom = max(logicalBottom, logicalTop + 1);
|
| }
|
| - if (r->m_originatingLine) {
|
| + if (r->originatingLine()) {
|
| if (!selfNeedsLayout()) {
|
| - ASSERT(r->m_originatingLine->renderer() == this);
|
| - r->m_originatingLine->markDirty();
|
| + ASSERT(r->originatingLine()->renderer() == this);
|
| + r->originatingLine()->markDirty();
|
| }
|
| #if !ASSERT_DISABLED
|
| - r->m_originatingLine = 0;
|
| + r->setOriginatingLine(0);
|
| #endif
|
| }
|
| markLinesDirtyInBlockRange(0, logicalBottom);
|
| }
|
| m_floatingObjects->remove(r);
|
| - ASSERT(!r->m_originatingLine);
|
| + ASSERT(!r->originatingLine());
|
| delete r;
|
| }
|
| }
|
| @@ -3967,7 +3968,7 @@ void RenderBlock::removeFloatingObjectsBelow(FloatingObject* lastFloat, int logi
|
| FloatingObject* curr = floatingObjectSet.last();
|
| while (curr != lastFloat && (!curr->isPlaced() || logicalTopForFloat(curr) >= logicalOffset)) {
|
| m_floatingObjects->remove(curr);
|
| - ASSERT(!curr->m_originatingLine);
|
| + ASSERT(!curr->originatingLine());
|
| delete curr;
|
| if (floatingObjectSet.isEmpty())
|
| break;
|
| @@ -4119,7 +4120,7 @@ bool RenderBlock::positionNewFloats()
|
| }
|
|
|
| if (newLogicalTop != floatLogicalLocation.y()) {
|
| - floatingObject->m_paginationStrut = newLogicalTop - floatLogicalLocation.y();
|
| + floatingObject->setPaginationStrut(newLogicalTop - floatLogicalLocation.y());
|
|
|
| floatLogicalLocation = computeLogicalLocationForFloat(floatingObject, newLogicalTop);
|
| setLogicalLeftForFloat(floatingObject, floatLogicalLocation.x());
|
| @@ -4273,9 +4274,10 @@ inline void RenderBlock::FloatIntervalSearchAdapter<FloatTypeValue>::collectIfNe
|
| if (floatingObject->type() != FloatTypeValue || !rangesIntersect(interval.low(), interval.high(), m_lowValue, m_highValue))
|
| return;
|
|
|
| - // All the objects returned from the tree should be already placed.
|
| + // Make sure the float hasn't changed since it was added to the placed floats tree.
|
| ASSERT(floatingObject->isPlaced());
|
| - ASSERT(rangesIntersect(m_renderer->pixelSnappedLogicalTopForFloat(floatingObject), m_renderer->pixelSnappedLogicalBottomForFloat(floatingObject), m_lowValue, m_highValue));
|
| + ASSERT(interval.low() == m_renderer->pixelSnappedLogicalTopForFloat(floatingObject));
|
| + ASSERT(interval.high() == m_renderer->pixelSnappedLogicalBottomForFloat(floatingObject));
|
|
|
| bool floatIsNewExtreme = updateOffsetIfNeeded(floatingObject);
|
| if (floatIsNewExtreme && m_heightRemaining)
|
| @@ -4499,7 +4501,7 @@ void RenderBlock::clearFloats()
|
| for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it != end; ++it) {
|
| FloatingObject* floatingObject = *it;
|
| if (!floatingObject->isDescendant())
|
| - oldIntrudingFloatSet.add(floatingObject->m_renderer);
|
| + oldIntrudingFloatSet.add(floatingObject->renderer());
|
| }
|
| }
|
|
|
| @@ -4523,7 +4525,7 @@ void RenderBlock::clearFloats()
|
| FloatingObjectSetIterator end = floatingObjectSet.end();
|
| for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it != end; ++it) {
|
| FloatingObject* f = *it;
|
| - floatMap.add(f->m_renderer, f);
|
| + floatMap.add(f->renderer(), f);
|
| }
|
| } else {
|
| deleteAllValues(floatingObjectSet);
|
| @@ -4575,7 +4577,7 @@ void RenderBlock::clearFloats()
|
| FloatingObjectSetIterator end = floatingObjectSet.end();
|
| for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it != end; ++it) {
|
| FloatingObject* f = *it;
|
| - FloatingObject* oldFloatingObject = floatMap.get(f->m_renderer);
|
| + FloatingObject* oldFloatingObject = floatMap.get(f->renderer());
|
| LayoutUnit logicalBottom = logicalBottomForFloat(f);
|
| if (oldFloatingObject) {
|
| LayoutUnit oldLogicalBottom = logicalBottomForFloat(oldFloatingObject);
|
| @@ -4595,10 +4597,10 @@ void RenderBlock::clearFloats()
|
| }
|
| }
|
|
|
| - floatMap.remove(f->m_renderer);
|
| - if (oldFloatingObject->m_originatingLine && !selfNeedsLayout()) {
|
| - ASSERT(oldFloatingObject->m_originatingLine->renderer() == this);
|
| - oldFloatingObject->m_originatingLine->markDirty();
|
| + floatMap.remove(f->renderer());
|
| + if (oldFloatingObject->originatingLine() && !selfNeedsLayout()) {
|
| + ASSERT(oldFloatingObject->originatingLine()->renderer() == this);
|
| + oldFloatingObject->originatingLine()->markDirty();
|
| }
|
| delete oldFloatingObject;
|
| } else {
|
| @@ -4628,7 +4630,7 @@ void RenderBlock::clearFloats()
|
| const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
|
| FloatingObjectSetIterator end = floatingObjectSet.end();
|
| for (FloatingObjectSetIterator it = floatingObjectSet.begin(); it != end && !oldIntrudingFloatSet.isEmpty(); ++it)
|
| - oldIntrudingFloatSet.remove((*it)->m_renderer);
|
| + oldIntrudingFloatSet.remove((*it)->renderer());
|
| if (!oldIntrudingFloatSet.isEmpty())
|
| markAllDescendantsWithFloatsForLayout();
|
| }
|
| @@ -4656,16 +4658,16 @@ LayoutUnit RenderBlock::addOverhangingFloats(RenderBlock* child, bool makeChildP
|
|
|
| if (logicalBottom > logicalHeight()) {
|
| // If the object is not in the list, we add it now.
|
| - if (!containsFloat(r->m_renderer)) {
|
| + if (!containsFloat(r->renderer())) {
|
| LayoutSize offset = isHorizontalWritingMode() ? LayoutSize(-childLogicalLeft, -childLogicalTop) : LayoutSize(-childLogicalTop, -childLogicalLeft);
|
| FloatingObject* floatingObj = new FloatingObject(r->type(), LayoutRect(r->frameRect().location() - offset, r->frameRect().size()));
|
| - floatingObj->m_renderer = r->m_renderer;
|
| + floatingObj->setRenderer(r->renderer());
|
|
|
| // The nearest enclosing layer always paints the float (so that zindex and stacking
|
| // behaves properly). We always want to propagate the desire to paint the float as
|
| // far out as we can, to the outermost block that overlaps the float, stopping only
|
| // if we hit a self-painting layer boundary.
|
| - if (r->m_renderer->enclosingFloatPaintingLayer() == enclosingFloatPaintingLayer())
|
| + if (r->renderer()->enclosingFloatPaintingLayer() == enclosingFloatPaintingLayer())
|
| r->setShouldPaint(false);
|
| else
|
| floatingObj->setShouldPaint(false);
|
| @@ -4678,8 +4680,8 @@ LayoutUnit RenderBlock::addOverhangingFloats(RenderBlock* child, bool makeChildP
|
| m_floatingObjects->add(floatingObj);
|
| }
|
| } else {
|
| - if (makeChildPaintOtherFloats && !r->shouldPaint() && !r->m_renderer->hasSelfPaintingLayer()
|
| - && r->m_renderer->isDescendantOf(child) && r->m_renderer->enclosingFloatPaintingLayer() == child->enclosingFloatPaintingLayer()) {
|
| + if (makeChildPaintOtherFloats && !r->shouldPaint() && !r->renderer()->hasSelfPaintingLayer()
|
| + && r->renderer()->isDescendantOf(child) && r->renderer()->enclosingFloatPaintingLayer() == child->enclosingFloatPaintingLayer()) {
|
| // The float is not overhanging from this block, so if it is a descendant of the child, the child should
|
| // paint it (the other case is that it is intruding into the child), unless it has its own layer or enclosing
|
| // layer.
|
| @@ -4691,7 +4693,7 @@ LayoutUnit RenderBlock::addOverhangingFloats(RenderBlock* child, bool makeChildP
|
| // Since the float doesn't overhang, it didn't get put into our list. We need to go ahead and add its overflow in to the
|
| // child now.
|
| if (r->isDescendant())
|
| - child->addOverflowFromChild(r->m_renderer, LayoutSize(xPositionForFloatIncludingMargin(r), yPositionForFloatIncludingMargin(r)));
|
| + child->addOverflowFromChild(r->renderer(), LayoutSize(xPositionForFloatIncludingMargin(r), yPositionForFloatIncludingMargin(r)));
|
| }
|
| }
|
| return lowestFloatLogicalBottom;
|
| @@ -4742,7 +4744,7 @@ void RenderBlock::addIntrudingFloats(RenderBlock* prev, LayoutUnit logicalLeftOf
|
| }
|
|
|
| floatingObj->setShouldPaint(false); // We are not in the direct inheritance chain for this float. We will never paint it.
|
| - floatingObj->m_renderer = r->m_renderer;
|
| + floatingObj->setRenderer(r->renderer());
|
|
|
| // We create the floating object list lazily.
|
| if (!m_floatingObjects)
|
| @@ -4996,11 +4998,11 @@ bool RenderBlock::hitTestFloats(const HitTestRequest& request, HitTestResult& re
|
| for (FloatingObjectSetIterator it = floatingObjectSet.end(); it != begin;) {
|
| --it;
|
| FloatingObject* floatingObject = *it;
|
| - if (floatingObject->shouldPaint() && !floatingObject->m_renderer->hasSelfPaintingLayer()) {
|
| - LayoutUnit xOffset = xPositionForFloatIncludingMargin(floatingObject) - floatingObject->m_renderer->x();
|
| - LayoutUnit yOffset = yPositionForFloatIncludingMargin(floatingObject) - floatingObject->m_renderer->y();
|
| + if (floatingObject->shouldPaint() && !floatingObject->renderer()->hasSelfPaintingLayer()) {
|
| + LayoutUnit xOffset = xPositionForFloatIncludingMargin(floatingObject) - floatingObject->renderer()->x();
|
| + LayoutUnit yOffset = yPositionForFloatIncludingMargin(floatingObject) - floatingObject->renderer()->y();
|
| LayoutPoint childPoint = flipFloatForWritingModeForChild(floatingObject, adjustedLocation + LayoutSize(xOffset, yOffset));
|
| - if (floatingObject->m_renderer->hitTest(request, result, locationInContainer, childPoint)) {
|
| + if (floatingObject->renderer()->hitTest(request, result, locationInContainer, childPoint)) {
|
| updateHitTestResult(result, locationInContainer.point() - toLayoutSize(childPoint));
|
| return true;
|
| }
|
| @@ -6891,8 +6893,8 @@ void RenderBlock::adjustForBorderFit(LayoutUnit x, LayoutUnit& left, LayoutUnit&
|
| FloatingObject* r = *it;
|
| // Only examine the object if our m_shouldPaint flag is set.
|
| if (r->shouldPaint()) {
|
| - LayoutUnit floatLeft = xPositionForFloatIncludingMargin(r) - r->m_renderer->x();
|
| - LayoutUnit floatRight = floatLeft + r->m_renderer->width();
|
| + LayoutUnit floatLeft = xPositionForFloatIncludingMargin(r) - r->renderer()->x();
|
| + LayoutUnit floatRight = floatLeft + r->renderer()->width();
|
| left = min(left, floatLeft);
|
| right = max(right, floatRight);
|
| }
|
| @@ -7660,7 +7662,7 @@ LayoutUnit RenderBlock::offsetFromLogicalTopOfFirstPage() const
|
| // FIXME: Sanity check that the renderer in the layout state is ours, since otherwise the computation will be off.
|
| // Right now this assert gets hit inside computeLogicalHeight for percentage margins, since they're computed using
|
| // widths which can vary in each region. Until we patch that, we can't have this assert.
|
| - // ASSERT(layoutState->m_renderer == this);
|
| + // ASSERT(layoutState->renderer() == this);
|
|
|
| LayoutSize offsetDelta = layoutState->m_layoutOffset - layoutState->m_pageOffset;
|
| return isHorizontalWritingMode() ? offsetDelta.height() : offsetDelta.width();
|
|
|