X-Git-Url: https://git.webkit.org/?p=WebKit-https.git;a=blobdiff_plain;f=Source%2FWebCore%2Frendering%2FRenderElement.cpp;h=411a02bed2098c7708d35887ade4585b0acd6a10;hp=24ce1161dea6fa4ce34b42ec0b45ffa4137d2fdf;hb=a3f6edbe2c6653bb544ab84f7d84999f6e67957d;hpb=628932e57eb445346f28a19dc53fa22c80bcc039 diff --git a/Source/WebCore/rendering/RenderElement.cpp b/Source/WebCore/rendering/RenderElement.cpp index 24ce1161dea6..411a02bed209 100644 --- a/Source/WebCore/rendering/RenderElement.cpp +++ b/Source/WebCore/rendering/RenderElement.cpp @@ -94,7 +94,6 @@ struct SameSizeAsRenderElement : public RenderObject { static_assert(sizeof(RenderElement) == sizeof(SameSizeAsRenderElement), "RenderElement should stay small"); -bool RenderElement::s_affectsParentBlock = false; bool RenderElement::s_noLongerAffectsParentBlock = false; inline RenderElement::RenderElement(ContainerNode& elementOrDocument, RenderStyle&& style, BaseTypeFlags baseTypeFlags) @@ -749,10 +748,6 @@ void RenderElement::styleWillChange(StyleDifference diff, const RenderStyle& new downcast(*this).removeFloatingOrPositionedChildFromBlockLists(); } - s_affectsParentBlock = isFloatingOrOutOfFlowPositioned() - && (!newStyle.isFloating() && !newStyle.hasOutOfFlowPosition()) - && parent() && (parent()->isRenderBlockFlow() || parent()->isRenderInline()); - s_noLongerAffectsParentBlock = ((!isFloating() && newStyle.isFloating()) || (!isOutOfFlowPositioned() && newStyle.hasOutOfFlowPosition())) && parent() && parent()->isRenderBlock(); @@ -769,10 +764,8 @@ void RenderElement::styleWillChange(StyleDifference diff, const RenderStyle& new setHasOverflowClip(false); setHasTransformRelatedProperty(false); setHasReflection(false); - } else { - s_affectsParentBlock = false; + } else s_noLongerAffectsParentBlock = false; - } bool newStyleSlowScroll = false; if (newStyle.hasFixedBackgroundImage() && !settings().fixedBackgroundsPaintRelativeToDocument()) { @@ -813,7 +806,10 @@ void RenderElement::styleDidChange(StyleDifference diff, const RenderStyle* oldS updateImage(oldStyle ? oldStyle->maskBoxImage().image() : nullptr, m_style.maskBoxImage().image()); updateShapeImage(oldStyle ? oldStyle->shapeOutside() : nullptr, m_style.shapeOutside()); - if (s_affectsParentBlock) { + bool affectsParentBlock = oldStyle && (oldStyle->isFloating() || oldStyle->hasOutOfFlowPosition()) + && !style().isFloating() && !style().hasOutOfFlowPosition() + && parent() && (parent()->isRenderBlockFlow() || parent()->isRenderInline()); + if (affectsParentBlock) { // We have gone from not affecting the inline status of the parent flow to suddenly // having an impact. See if there is a mismatch between the parent flow's // childrenInline() state and our state.