diff --git a/Libraries/LibWeb/HTML/HTMLDialogElement.cpp b/Libraries/LibWeb/HTML/HTMLDialogElement.cpp index d2fe4534011..01ac0867cf9 100644 --- a/Libraries/LibWeb/HTML/HTMLDialogElement.cpp +++ b/Libraries/LibWeb/HTML/HTMLDialogElement.cpp @@ -223,7 +223,7 @@ WebIDL::ExceptionOr HTMLDialogElement::show_a_modal_dialog(HTMLDialogEleme TRY(subject.set_attribute(AttributeNames::open, {})); // 12. Set is modal of subject to true. - subject.m_is_modal = true; + subject.set_is_modal(true); // FIXME: 13. Assert: subject's node document's open dialogs list does not contain subject. // FIXME: 14. Add subject to subject's node document's open dialogs list. @@ -338,7 +338,7 @@ void HTMLDialogElement::close_the_dialog(Optional result) // FIXME: 7. Let wasModal be the value of subject's is modal flag. // 8. Set the is modal flag of subject to false. - m_is_modal = false; + set_is_modal(false); // FIXME: 9. Remove subject from subject's node document's open dialogs list. @@ -435,4 +435,12 @@ void HTMLDialogElement::run_dialog_focusing_steps() // FIXME: 10. Set topDocument's autofocus processed flag to true. } +void HTMLDialogElement::set_is_modal(bool is_modal) +{ + if (m_is_modal == is_modal) + return; + m_is_modal = is_modal; + invalidate_style(DOM::StyleInvalidationReason::NodeRemove); +} + } diff --git a/Libraries/LibWeb/HTML/HTMLDialogElement.h b/Libraries/LibWeb/HTML/HTMLDialogElement.h index 3c8eb41f2a4..02e471e980b 100644 --- a/Libraries/LibWeb/HTML/HTMLDialogElement.h +++ b/Libraries/LibWeb/HTML/HTMLDialogElement.h @@ -37,6 +37,7 @@ public: virtual Optional default_role() const override { return ARIA::Role::dialog; } bool is_modal() const { return m_is_modal; } + void set_is_modal(bool); private: HTMLDialogElement(DOM::Document&, DOM::QualifiedName);