| Index: Source/core/rendering/RenderObject.cpp
|
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp
|
| index 31ef55b2640d041f77aa202fa76652f8aeadb880..7c69fbce2ec9d68331e39092f890cd9b9cba5bd5 100644
|
| --- a/Source/core/rendering/RenderObject.cpp
|
| +++ b/Source/core/rendering/RenderObject.cpp
|
| @@ -64,6 +64,7 @@
|
| #include "core/rendering/RenderInline.h"
|
| #include "core/rendering/RenderLayer.h"
|
| #include "core/rendering/RenderListItem.h"
|
| +#include "core/rendering/RenderMultiColumnSpannerPlaceholder.h"
|
| #include "core/rendering/RenderObjectInlines.h"
|
| #include "core/rendering/RenderPart.h"
|
| #include "core/rendering/RenderScrollbarPart.h"
|
| @@ -835,6 +836,8 @@ RenderBlock* RenderObject::containingBlock() const
|
|
|
| while (o && o->isAnonymousBlock())
|
| o = o->containingBlock();
|
| + } else if (isColumnSpanAll()) {
|
| + o = spannerPlaceholder()->containingBlock();
|
| } else {
|
| while (o && ((o->isInline() && !o->isReplaced()) || !o->isRenderBlock()))
|
| o = o->parent();
|
| @@ -2231,6 +2234,19 @@ RenderObject* RenderObject::container(const RenderLayerModelObject* paintInvalid
|
|
|
| o = o->parent();
|
| }
|
| + } else if (isColumnSpanAll()) {
|
| + RenderObject* multicolContainer = spannerPlaceholder()->container();
|
| + if (paintInvalidationContainerSkipped && paintInvalidationContainer) {
|
| + // We jumped directly from the spanner to the multicol container. Need to check if
|
| + // we skipped |paintInvalidationContainer| on the way.
|
| + for (RenderObject* walker = parent(); walker && walker != multicolContainer; walker = walker->parent()) {
|
| + if (walker == paintInvalidationContainer) {
|
| + *paintInvalidationContainerSkipped = true;
|
| + break;
|
| + }
|
| + }
|
| + }
|
| + return multicolContainer;
|
| }
|
|
|
| return o;
|
| @@ -2384,6 +2400,9 @@ void RenderObject::removeFromRenderFlowThreadRecursive(RenderFlowThread* renderF
|
| for (RenderObject* child = children->firstChild(); child; child = child->nextSibling())
|
| child->removeFromRenderFlowThreadRecursive(renderFlowThread);
|
| }
|
| +
|
| + if (renderFlowThread && renderFlowThread != this)
|
| + renderFlowThread->flowThreadDescendantWillBeRemoved(this);
|
| setFlowThreadState(NotInsideFlowThread);
|
| }
|
|
|
|
|