Index: Source/core/html/HTMLDialogElement.cpp |
diff --git a/Source/core/html/HTMLDialogElement.cpp b/Source/core/html/HTMLDialogElement.cpp |
index bb8952226746c71671082f012ccf8bb355c19bbb..73b9ff3abb59f47ab3d04a73e3323033f4a332c5 100644 |
--- a/Source/core/html/HTMLDialogElement.cpp |
+++ b/Source/core/html/HTMLDialogElement.cpp |
@@ -94,6 +94,7 @@ HTMLDialogElement::HTMLDialogElement(Document& document) |
, m_centeringMode(Uninitialized) |
, m_centeredPosition(0) |
, m_returnValue("") |
+ , m_modal(false) |
{ |
ScriptWrappable::init(this); |
} |
@@ -112,6 +113,13 @@ void HTMLDialogElement::close(const String& returnValue, ExceptionState& excepti |
closeDialog(returnValue); |
} |
+void HTMLDialogElement::removedFrom(ContainerNode* insertionPoint) |
+{ |
+ // FIXME: We should call inertSubtreesChanged if needed here. |
+ m_modal = false; |
+ HTMLElement::removedFrom(insertionPoint); |
+} |
+ |
void HTMLDialogElement::closeDialog(const String& returnValue) |
{ |
if (!fastHasAttribute(openAttr)) |
@@ -119,6 +127,7 @@ void HTMLDialogElement::closeDialog(const String& returnValue) |
setBooleanAttribute(openAttr, false); |
HTMLDialogElement* activeModalDialog = document().activeModalDialog(); |
+ m_modal = false; |
document().removeFromTopLayer(this); |
if (activeModalDialog == this) |
inertSubtreesChanged(document()); |
@@ -156,6 +165,7 @@ void HTMLDialogElement::showModal(ExceptionState& exceptionState) |
return; |
} |
+ m_modal = true; |
document().addToTopLayer(this); |
setBooleanAttribute(openAttr, true); |