diff options
Diffstat (limited to 'Source/WebCore/rendering/RenderBlock.cpp')
-rwxr-xr-x | Source/WebCore/rendering/RenderBlock.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/Source/WebCore/rendering/RenderBlock.cpp b/Source/WebCore/rendering/RenderBlock.cpp index a4158f4e1..119cbb7fd 100755 --- a/Source/WebCore/rendering/RenderBlock.cpp +++ b/Source/WebCore/rendering/RenderBlock.cpp @@ -309,7 +309,7 @@ void RenderBlock::styleWillChange(StyleDifference diff, const RenderStyle* newSt toRenderBlock(cb)->removePositionedObjects(this); } - if (containsFloats() && !isFloating() && !isOutOfFlowPositioned() && (newStyle->position() == AbsolutePosition || newStyle->position() == FixedPosition)) + if (containsFloats() && !isFloating() && !isOutOfFlowPositioned() && newStyle->hasOutOfFlowPosition()) markAllDescendantsWithFloatsForLayout(); } @@ -1143,6 +1143,8 @@ void RenderBlock::collapseAnonymousBoxChild(RenderBlock* parent, RenderObject* c RenderObject* nextSibling = child->nextSibling(); RenderFlowThread* childFlowThread = child->enclosingRenderFlowThread(); + CurrentRenderFlowThreadMaintainer flowThreadMaintainer(childFlowThread); + RenderBlock* anonBlock = toRenderBlock(parent->children()->removeChildNode(parent, child, child->hasLayer())); anonBlock->moveAllChildrenTo(parent, nextSibling, child->hasLayer()); // Delete the now-empty block's lines and nuke it. @@ -3174,9 +3176,10 @@ bool RenderBlock::isSelectionRoot() const if (isTable()) return false; - if (isBody() || isRoot() || hasOverflowClip() || isRelPositioned() - || isFloatingOrOutOfFlowPositioned() || isTableCell() || isInlineBlockOrInlineTable() || hasTransform() - || hasReflection() || hasMask() || isWritingModeRoot()) + if (isBody() || isRoot() || hasOverflowClip() + || isInFlowPositioned() || isFloatingOrOutOfFlowPositioned() + || isTableCell() || isInlineBlockOrInlineTable() + || hasTransform() || hasReflection() || hasMask() || isWritingModeRoot()) return true; if (view() && view()->selectionStart()) { @@ -3396,10 +3399,10 @@ GapRects RenderBlock::blockSelectionGaps(RenderBlock* rootBlock, const LayoutPoi if (curr->isFloatingOrOutOfFlowPositioned()) continue; // We must be a normal flow object in order to even be considered. - if (curr->isRelPositioned() && curr->hasLayer()) { + if (curr->isInFlowPositioned() && curr->hasLayer()) { // If the relposition offset is anything other than 0, then treat this just like an absolute positioned element. // Just disregard it completely. - LayoutSize relOffset = curr->layer()->relativePositionOffset(); + LayoutSize relOffset = curr->layer()->offsetForInFlowPosition(); if (relOffset.width() || relOffset.height()) continue; } @@ -4879,8 +4882,9 @@ static inline bool isEditingBoundary(RenderObject* ancestor, RenderObject* child static VisiblePosition positionForPointRespectingEditingBoundaries(RenderBlock* parent, RenderBox* child, const LayoutPoint& pointInParentCoordinates) { LayoutPoint childLocation = child->location(); - if (child->isRelPositioned()) - childLocation += child->relativePositionOffset(); + if (child->isInFlowPositioned()) + childLocation += child->offsetForInFlowPosition(); + // FIXME: This is wrong if the child's writing-mode is different from the parent's. LayoutPoint pointInChildCoordinates(toLayoutPoint(pointInParentCoordinates - childLocation)); |