LibWeb: Ignore parsed pseudo-element selectors & empty complex selectors

Currently we don't deal with them, so they shouldn't return a
SimpleSelector - that'd be a false positive.

Also don't produce a ComplexSelector if no SimpleSelector was parsed.

This fixes a couple of rendering issues on awesomekling.github.io:
link colours, footer size, content max-width (and possibly more!)
This commit is contained in:
Linus Groh 2020-05-11 00:51:57 +01:00 committed by Andreas Kling
parent a427821dd1
commit 673527d314
Notes: sideshowbarker 2024-07-19 06:43:50 +09:00

View File

@ -383,6 +383,12 @@ public:
auto pseudo_name = String::copy(buffer);
buffer.clear();
// Ignore for now, otherwise we produce a "false positive" selector
// and apply styles to the element itself, not its pseudo element
if (is_pseudo_element)
return {};
if (pseudo_name == "link")
simple_selector.pseudo_class = Selector::SimpleSelector::PseudoClass::Link;
else if (pseudo_name == "hover")
@ -442,6 +448,9 @@ public:
PARSE_ASSERT(simple_selectors.size() < 100);
}
if (simple_selectors.is_empty())
return {};
return Selector::ComplexSelector { relation, move(simple_selectors) };
}