Bläddra i källkod

LibWeb: Take padding into account when resolving border radii

Before this change, we were resolving border radii values based on
content box + border widths only, ignoring padding.
Andreas Kling 1 år sedan
förälder
incheckning
ca57e40350

+ 10 - 0
Tests/LibWeb/Ref/border-radius-with-padding.html

@@ -0,0 +1,10 @@
+<!doctype html><head>
+<link rel="match" href="reference/border-radius-with-padding-ref.html" />
+<style type="text/css">
+    div {
+        border: 1px solid black;
+        border-radius: 32px;
+        padding: 25px;
+        width: 0px;
+    }
+</style></head><body><div>

+ 8 - 0
Tests/LibWeb/Ref/reference/border-radius-with-padding-ref.html

@@ -0,0 +1,8 @@
+<!doctype html><style type="text/css">
+    div {
+        border: 1px solid black;
+        border-radius: 32px;
+        width: 50px;
+        height: 50px;
+    }
+</style><div>

+ 1 - 2
Userland/Libraries/LibWeb/Layout/LayoutState.cpp

@@ -285,8 +285,7 @@ void LayoutState::resolve_border_radii()
         if (paintable && is<Painting::PaintableBox>(*paintable)) {
         if (paintable && is<Painting::PaintableBox>(*paintable)) {
             auto& paintable_box = static_cast<Painting::PaintableBox&>(*paintable);
             auto& paintable_box = static_cast<Painting::PaintableBox&>(*paintable);
 
 
-            CSSPixelRect const content_rect { 0, 0, used_values.content_width(), used_values.content_height() };
-            auto border_rect = content_rect.inflated(used_values.border_top, used_values.border_right, used_values.border_bottom, used_values.border_left);
+            CSSPixelRect const border_rect { 0, 0, used_values.border_box_width(), used_values.border_box_height() };
 
 
             auto const& border_top_left_radius = node.computed_values().border_top_left_radius();
             auto const& border_top_left_radius = node.computed_values().border_top_left_radius();
             auto const& border_top_right_radius = node.computed_values().border_top_right_radius();
             auto const& border_top_right_radius = node.computed_values().border_top_right_radius();