зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1875137 - Don't ignore state changes in display: none subtrees if needed for :has(). r=dshin
Just like we do for attribute invalidation. Differential Revision: https://phabricator.services.mozilla.com/D198929
This commit is contained in:
Родитель
7245fbd474
Коммит
e59458d592
|
@ -3445,7 +3445,9 @@ void RestyleManager::ElementStateChanged(Element* aElement,
|
|||
// undisplayed elements, since we don't know if it is needed.
|
||||
IncrementUndisplayedRestyleGeneration();
|
||||
|
||||
if (!aElement->HasServoData()) {
|
||||
if (!aElement->HasServoData() &&
|
||||
!(aElement->GetSelectorFlags() &
|
||||
NodeSelectorFlags::RelativeSelectorSearchDirectionAncestorSibling)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
<!doctype html>
|
||||
<title>CSS Test Reference</title>
|
||||
<div>PASS</div>
|
|
@ -0,0 +1,28 @@
|
|||
<!doctype html>
|
||||
<html class="reftest-wait">
|
||||
<meta charset="utf-8">
|
||||
<title>:has() invalidation inside display: none subtree</title>
|
||||
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
|
||||
<link rel="author" href="https://mozilla.org" title="Mozilla">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1875137">
|
||||
<link rel="help" href="https://drafts.csswg.org/selectors/#relational">
|
||||
<link rel="match" href="has-display-none-checked-ref.html">
|
||||
<style>
|
||||
body:has(input:checked) #fail {
|
||||
display: none;
|
||||
}
|
||||
body:not(:has(input:checked)) #pass {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
<div style="display: none">
|
||||
<input type="checkbox" id="on">
|
||||
</div>
|
||||
<div id="fail">FAIL</div>
|
||||
<div id="pass">PASS</div>
|
||||
<script>
|
||||
document.addEventListener("TestRendered", function() {
|
||||
document.querySelector("input").checked = true;
|
||||
document.documentElement.className = "";
|
||||
});
|
||||
</script>
|
Загрузка…
Ссылка в новой задаче