Title: [290881] trunk/Source/WebCore
Revision
290881
Author
[email protected]
Date
2022-03-07 03:18:47 -0800 (Mon, 07 Mar 2022)

Log Message

Add hasTransformOrPerspective() helper to RenderObject
https://bugs.webkit.org/show_bug.cgi?id=237469

Reviewed by Darin Adler.

Avoid duplicating the logic to test if a renderer is transformed in
multiple places. Currently RenderGeometryMap duplicates the logic to add
one extra condition, the presence of a 'perspective' property.

While I was at it: remove the redundant offsetPath() check in
RenderObject::hasTransform(), since RenderStyle::hasTransform()
already returns true if offsetPath() is non-null.

LBSE wants to extend hasTransform() by a new condition: hasSVGTransform().
Before this patch, the place in RenderGeometryMap was easy to miss, fix that,
by centralizing the logic in one place.

Covered by existing tests, no change in behaviour.

* rendering/RenderGeometryMap.cpp:
(WebCore::canMapBetweenRenderersViaLayers): Use RenderObject::hasTransformOrPespective().
* rendering/RenderObject.h:
(WebCore::RenderObject::hasTransform const): Remove redundant offsetPath() check.
(WebCore::RenderObject::hasTransformOrPespective const): Add new helper.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (290880 => 290881)


--- trunk/Source/WebCore/ChangeLog	2022-03-07 11:16:26 UTC (rev 290880)
+++ trunk/Source/WebCore/ChangeLog	2022-03-07 11:18:47 UTC (rev 290881)
@@ -1,5 +1,32 @@
 2022-03-07  Nikolas Zimmermann  <[email protected]>
 
+        Add hasTransformOrPerspective() helper to RenderObject
+        https://bugs.webkit.org/show_bug.cgi?id=237469
+
+        Reviewed by Darin Adler.
+
+        Avoid duplicating the logic to test if a renderer is transformed in
+        multiple places. Currently RenderGeometryMap duplicates the logic to add
+        one extra condition, the presence of a 'perspective' property.
+
+        While I was at it: remove the redundant offsetPath() check in
+        RenderObject::hasTransform(), since RenderStyle::hasTransform()
+        already returns true if offsetPath() is non-null.
+
+        LBSE wants to extend hasTransform() by a new condition: hasSVGTransform().
+        Before this patch, the place in RenderGeometryMap was easy to miss, fix that,
+        by centralizing the logic in one place.
+
+        Covered by existing tests, no change in behaviour.
+
+        * rendering/RenderGeometryMap.cpp:
+        (WebCore::canMapBetweenRenderersViaLayers): Use RenderObject::hasTransformOrPespective().
+        * rendering/RenderObject.h:
+        (WebCore::RenderObject::hasTransform const): Remove redundant offsetPath() check.
+        (WebCore::RenderObject::hasTransformOrPespective const): Add new helper.
+
+2022-03-07  Nikolas Zimmermann  <[email protected]>
+
         [LBSE] Begin layer-aware RenderSVGTransformableContainer implementation
         https://bugs.webkit.org/show_bug.cgi?id=237024
 

Modified: trunk/Source/WebCore/rendering/RenderGeometryMap.cpp (290880 => 290881)


--- trunk/Source/WebCore/rendering/RenderGeometryMap.cpp	2022-03-07 11:16:26 UTC (rev 290880)
+++ trunk/Source/WebCore/rendering/RenderGeometryMap.cpp	2022-03-07 11:18:47 UTC (rev 290881)
@@ -150,7 +150,7 @@
         if (current->isFixedPositioned() || style.isFlippedBlocksWritingMode())
             return false;
 
-        if (current->hasTransformRelatedProperty() && (style.hasTransform() || style.translate() || style.scale() || style.rotate() || style.hasPerspective()))
+        if (current->hasTransformOrPespective())
             return false;
         
         if (current->isRenderFragmentedFlow())

Modified: trunk/Source/WebCore/rendering/RenderObject.h (290880 => 290881)


--- trunk/Source/WebCore/rendering/RenderObject.h	2022-03-07 11:16:26 UTC (rev 290880)
+++ trunk/Source/WebCore/rendering/RenderObject.h	2022-03-07 11:18:47 UTC (rev 290881)
@@ -449,7 +449,8 @@
     bool hasPotentiallyScrollableOverflow() const;
 
     bool hasTransformRelatedProperty() const { return m_bitfields.hasTransformRelatedProperty(); } // Transform, perspective or transform-style: preserve-3d.
-    bool hasTransform() const { return hasTransformRelatedProperty() && (style().hasTransform() || style().translate() || style().scale() || style().rotate() || style().offsetPath()); }
+    bool hasTransform() const { return hasTransformRelatedProperty() && (style().hasTransform() || style().translate() || style().scale() || style().rotate()); }
+    bool hasTransformOrPespective() const { return hasTransformRelatedProperty() && (hasTransform() || style().hasPerspective()); }
 
     inline bool preservesNewline() const;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to