Browse Source

LibWeb: Resolve CSS transform lengths against padding rect

Fixes https://github.com/SerenityOS/serenity/issues/22797
Aliaksandr Kalenik 1 year ago
parent
commit
f529188fb8

+ 11 - 0
Tests/LibWeb/Ref/reference/transform-2d-translate-ref.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<style>
+* {
+    outline: 1px solid black;
+}
+div {
+    height: 100px;
+    background: pink;
+    transform: translate(0, -50%);
+}
+</style><body><div id="box">

+ 12 - 0
Tests/LibWeb/Ref/transform-2d-translate.html

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<link rel="match" href="reference/transform-2d-translate-ref.html" />
+<style>
+* {
+    outline: 1px solid black;
+}
+div {
+    padding: 50px;
+    background: pink;
+    transform: translate(0, -50%);
+}
+</style><body><div id="box">

+ 1 - 1
Userland/Libraries/LibWeb/CSS/Transformation.cpp

@@ -45,7 +45,7 @@ ErrorOr<Gfx::FloatMatrix4x4> Transformation::to_matrix(Optional<Painting::Painta
     CSSPixels width = 1;
     CSSPixels height = 1;
     if (paintable_box.has_value()) {
-        auto reference_box = paintable_box->absolute_rect();
+        auto reference_box = paintable_box->absolute_padding_box_rect();
         width = reference_box.width();
         height = reference_box.height();
     }