LibWeb: Don't iterate over text content inside replaced elements

This fixes an issue where whitespace inside embedded <svg> elements
would create unexpected whitespace text content on the page.

When combined with something like `white-space: pre-wrap`, it ended
up generating a lot of surprising vertical offsets.
This commit is contained in:
Andreas Kling 2022-07-10 22:04:06 +02:00
parent 7b4a86ab80
commit 28eec22c83
Notes: sideshowbarker 2024-07-17 09:30:28 +09:00

View file

@ -68,7 +68,7 @@ void InlineLevelIterator::exit_node_with_box_model_metrics()
// This is similar to Layout::Node::next_in_pre_order() but will not descend into inline-block nodes.
Layout::Node const* InlineLevelIterator::next_inline_node_in_pre_order(Layout::Node const& current, Layout::Node const* stay_within)
{
if (current.first_child() && current.first_child()->is_inline() && !current.is_inline_block()) {
if (current.first_child() && current.first_child()->is_inline() && !current.is_inline_block() && !current.is_replaced_box()) {
if (!current.is_box() || !static_cast<Box const&>(current).is_out_of_flow(m_inline_formatting_context))
return current.first_child();
}