diff --git a/Libraries/LibWeb/DOM/Node.h b/Libraries/LibWeb/DOM/Node.h index 8487fac5d3f..03016591df7 100644 --- a/Libraries/LibWeb/DOM/Node.h +++ b/Libraries/LibWeb/DOM/Node.h @@ -112,6 +112,7 @@ enum class SetNeedsLayoutReason { #define ENUMERATE_SET_NEEDS_LAYOUT_TREE_UPDATE_REASONS(X) \ X(ElementSetInnerHTML) \ + X(DetailsElementOpenedOrClosed) \ X(HTMLInputElementSrcAttribute) \ X(HTMLObjectElementUpdateLayoutAndChildObjects) \ X(KeyframeEffect) \ diff --git a/Libraries/LibWeb/HTML/HTMLDetailsElement.cpp b/Libraries/LibWeb/HTML/HTMLDetailsElement.cpp index 46c32a4b682..7da433ef830 100644 --- a/Libraries/LibWeb/HTML/HTMLDetailsElement.cpp +++ b/Libraries/LibWeb/HTML/HTMLDetailsElement.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include namespace Web::HTML { @@ -308,6 +309,8 @@ void HTMLDetailsElement::update_shadow_tree_style() content-visibility: hidden; )~~~"_string)); } + + shadow_root()->set_needs_layout_tree_update(true, DOM::SetNeedsLayoutTreeUpdateReason::DetailsElementOpenedOrClosed); } } diff --git a/Tests/LibWeb/Screenshot/expected/details-open-then-closed-ref.html b/Tests/LibWeb/Screenshot/expected/details-open-then-closed-ref.html new file mode 100644 index 00000000000..cc4b3cd8d46 --- /dev/null +++ b/Tests/LibWeb/Screenshot/expected/details-open-then-closed-ref.html @@ -0,0 +1,10 @@ + + + diff --git a/Tests/LibWeb/Screenshot/images/details-open-then-closed.png b/Tests/LibWeb/Screenshot/images/details-open-then-closed.png new file mode 100644 index 00000000000..85f6ca5d11c Binary files /dev/null and b/Tests/LibWeb/Screenshot/images/details-open-then-closed.png differ diff --git a/Tests/LibWeb/Screenshot/input/details-open-then-closed.html b/Tests/LibWeb/Screenshot/input/details-open-then-closed.html new file mode 100644 index 00000000000..f2a09e9f265 --- /dev/null +++ b/Tests/LibWeb/Screenshot/input/details-open-then-closed.html @@ -0,0 +1,9 @@ + + +
+ I'm a summary + I'm a node +
+