1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:47:44 +00:00

LibWeb: Make SVG <svg> elements behave as CSS replaced elements

This makes SVG-in-HTML behave quite a bit better by following general
replaced layout rules. It also turns <svg> elements into inline-level
boxes instead of block-level boxes.
This commit is contained in:
Andreas Kling 2022-03-18 22:13:26 +01:00
parent 48abbefb99
commit 28b771560a
10 changed files with 21 additions and 14 deletions

View file

@ -14,6 +14,7 @@
#include <LibWeb/Layout/InlineLevelIterator.h>
#include <LibWeb/Layout/LineBuilder.h>
#include <LibWeb/Layout/ReplacedBox.h>
#include <LibWeb/Layout/SVGSVGBox.h>
namespace Web::Layout {
@ -109,6 +110,10 @@ void InlineFormattingContext::dimension_box_on_line(Box const& box, LayoutMode l
if (is<ReplacedBox>(box)) {
auto& replaced = verify_cast<ReplacedBox>(box);
if (is<SVGSVGBox>(box))
(void)layout_inside(replaced, layout_mode);
box_state.content_width = compute_width_for_replaced_element(m_state, replaced);
box_state.content_height = compute_height_for_replaced_element(m_state, replaced);
return;