Index: Source/core/dom/Document.cpp |
diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp |
index e6f0a2152cfab98a07f826d7dee7798685d4885b..ff03ea5951396e3482729a727cd8ab5c37cdbb9a 100644 |
--- a/Source/core/dom/Document.cpp |
+++ b/Source/core/dom/Document.cpp |
@@ -4775,9 +4775,15 @@ void Document::removeFromTopLayer(Element* element) |
HTMLDialogElement* Document::activeModalDialog() const |
{ |
- if (m_topLayerElements.isEmpty()) |
- return 0; |
- return toHTMLDialogElement(m_topLayerElements.last().get()); |
+ Vector<RefPtr<Element> >::const_reverse_iterator end = m_topLayerElements.rend(); |
+ for (Vector<RefPtr<Element> >::const_reverse_iterator it = m_topLayerElements.rbegin(); it != end; ++it) { |
+ if (!it->get()->hasTagName(dialogTag)) |
+ continue; |
+ HTMLDialogElement* dialog = toHTMLDialogElement(it->get()); |
+ if (dialog->isModal()) |
+ return dialog; |
+ } |
+ return 0; |
} |
void Document::webkitExitPointerLock() |