diff --git a/Tests/LibWeb/Text/expected/css/element-opacity-change-invalidation.txt b/Tests/LibWeb/Text/expected/css/element-opacity-change-invalidation.txt new file mode 100644 index 0000000000..cbed30a087 --- /dev/null +++ b/Tests/LibWeb/Text/expected/css/element-opacity-change-invalidation.txt @@ -0,0 +1 @@ +Didn't crash :^) diff --git a/Tests/LibWeb/Text/input/css/element-opacity-change-invalidation.html b/Tests/LibWeb/Text/input/css/element-opacity-change-invalidation.html new file mode 100644 index 0000000000..3591f9e349 --- /dev/null +++ b/Tests/LibWeb/Text/input/css/element-opacity-change-invalidation.html @@ -0,0 +1,12 @@ + + diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index aa9feaafcb..a305a316c5 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -425,8 +425,8 @@ static Element::RequiredInvalidationAfterStyleChange compute_required_invalidati // OPTIMIZATION: An element creates a stacking context when its opacity changes from 1 to less than 1 // and stops to create one when opacity returns to 1. So stacking context tree rebuild is // not required for opacity changes within the range below 1. - auto old_value_opacity = old_value.has_value() ? old_value->style->as_number().number() : 1; - auto new_value_opacity = new_value.has_value() ? new_value->style->as_number().number() : 1; + auto old_value_opacity = old_style.opacity(); + auto new_value_opacity = new_style.opacity(); if (old_value_opacity != new_value_opacity && (old_value_opacity == 1 || new_value_opacity == 1)) { invalidation.rebuild_stacking_context_tree = true; }