Changeset 294845 in webkit
- Timestamp:
- May 25, 2022, 4:49:59 PM (4 years ago)
- Location:
- branches/safari-613-branch/Source/WebCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
rendering/RenderElement.cpp (modified) (4 diffs)
-
rendering/RenderElement.h (modified) (1 diff)
-
rendering/RenderLayer.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-613-branch/Source/WebCore/ChangeLog
r294844 r294845 1 2022-05-19 Alan Coon <alancoon@apple.com> 2 3 Cherry-pick r292596. rdar://problem/88862115 4 5 Take top layers into account in addLayers/removeLayers 6 https://bugs.webkit.org/show_bug.cgi?id=238946 7 8 Patch by Rob Buis <rbuis@igalia.com> on 2022-04-08 9 Reviewed by Simon Fraser. 10 11 Take top layers into account in addLayers/removeLayers, they 12 should use the RenderView layer as parent (emulating layerParent). 13 14 * rendering/RenderElement.cpp: 15 (WebCore::addLayers): 16 (WebCore::RenderElement::addLayers): 17 (WebCore::RenderElement::removeLayers): 18 (WebCore::RenderElement::willBeRemovedFromTree): 19 * rendering/RenderElement.h: 20 * rendering/RenderLayer.cpp: 21 (WebCore::RenderLayer::calculateClipRects const): 22 23 Canonical link: https://commits.webkit.org/249429@main 24 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@292596 268f45cc-cd09-0410-ab3c-d52691b4dbfc 25 26 2022-04-08 Rob Buis <rbuis@igalia.com> 27 28 Take top layers into account in addLayers/removeLayers 29 https://bugs.webkit.org/show_bug.cgi?id=238946 30 31 Reviewed by Simon Fraser. 32 33 Take top layers into account in addLayers/removeLayers, they 34 should use the RenderView layer as parent (emulating layerParent). 35 36 * rendering/RenderElement.cpp: 37 (WebCore::addLayers): 38 (WebCore::RenderElement::addLayers): 39 (WebCore::RenderElement::removeLayers): 40 (WebCore::RenderElement::willBeRemovedFromTree): 41 * rendering/RenderElement.h: 42 * rendering/RenderLayer.cpp: 43 (WebCore::RenderLayer::calculateClipRects const): 44 1 45 2022-05-19 Alan Coon <alancoon@apple.com> 2 46 -
branches/safari-613-branch/Source/WebCore/rendering/RenderElement.cpp
r293482 r294845 684 684 } 685 685 686 static void addLayers(const RenderElement& addedRenderer, RenderElement& currentRenderer, RenderLayer & parentLayer, std::optional<RenderLayer*>& beforeChild)686 static void addLayers(const RenderElement& addedRenderer, RenderElement& currentRenderer, RenderLayer* parentLayer) 687 687 { 688 688 if (currentRenderer.hasLayer()) { 689 if ( !beforeChild.has_value())690 beforeChild = layerNextSiblingRespectingTopLayer(addedRenderer, parentLayer);691 692 parentLayer .addChild(*downcast<RenderLayerModelObject>(currentRenderer).layer(), beforeChild.value());689 if (isInTopLayerOrBackdrop(currentRenderer.style(), currentRenderer.element())) 690 parentLayer = addedRenderer.view().layer(); 691 RenderLayer* beforeChild = layerNextSiblingRespectingTopLayer(addedRenderer, *parentLayer); 692 parentLayer->addChild(*downcast<RenderLayerModelObject>(currentRenderer).layer(), beforeChild); 693 693 return; 694 694 } 695 695 696 696 for (auto& child : childrenOfType<RenderElement>(currentRenderer)) 697 addLayers(addedRenderer, child, parentLayer , beforeChild);697 addLayers(addedRenderer, child, parentLayer); 698 698 } 699 699 … … 703 703 return; 704 704 705 std::optional<RenderLayer*> beforeChild;706 WebCore::addLayers(*this, *this, *parentLayer, beforeChild); 707 } 708 709 void RenderElement::removeLayers(RenderLayer* parentLayer) 710 { 705 WebCore::addLayers(*this, *this, parentLayer); 706 } 707 708 void RenderElement::removeLayers() 709 { 710 RenderLayer* parentLayer = layerParent(); 711 711 if (!parentLayer) 712 712 return; … … 718 718 719 719 for (auto& child : childrenOfType<RenderElement>(*this)) 720 child.removeLayers( parentLayer);720 child.removeLayers(); 721 721 } 722 722 … … 1023 1023 } 1024 1024 // Keep our layer hierarchy updated. 1025 if (firstChild() || hasLayer()) { 1026 auto* parentLayer = layerParent(); 1027 removeLayers(parentLayer); 1028 } 1025 if (firstChild() || hasLayer()) 1026 removeLayers(); 1029 1027 1030 1028 if (isOutOfFlowPositioned() && parent()->childrenInline()) -
branches/safari-613-branch/Source/WebCore/rendering/RenderElement.h
r293482 r294845 111 111 RenderLayer* layerNextSibling(RenderLayer& parentLayer) const; 112 112 void addLayers(RenderLayer* parentLayer); 113 void removeLayers(RenderLayer* parentLayer); 114 void moveLayers(RenderLayer& newParent); 113 void removeLayers(); 115 114 116 115 virtual void dirtyLinesFromChangedChild(RenderObject&) { } -
branches/safari-613-branch/Source/WebCore/rendering/RenderLayer.cpp
r293482 r294845 5442 5442 void RenderLayer::removeReflection() 5443 5443 { 5444 if (!m_reflection->renderTreeBeingDestroyed()) 5445 m_reflection->removeLayers(this); 5444 if (!m_reflection->renderTreeBeingDestroyed()) { 5445 if (auto* layer = m_reflection->layer()) 5446 removeChild(*layer); 5447 } 5446 5448 5447 5449 m_reflection->setParent(nullptr);
Note:
See TracChangeset
for help on using the changeset viewer.