diff options
Diffstat (limited to 'src/3rdparty/webkit/WebCore/rendering/RenderMenuList.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebCore/rendering/RenderMenuList.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderMenuList.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderMenuList.cpp index 4cd7b4324f..ed8c8ba93d 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderMenuList.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderMenuList.cpp @@ -25,6 +25,7 @@ #include "RenderMenuList.h" #include "CSSStyleSelector.h" +#include "Frame.h" #include "FrameView.h" #include "HTMLNames.h" #include "NodeRenderStyle.h" @@ -296,6 +297,12 @@ void RenderMenuList::hidePopup() void RenderMenuList::valueChanged(unsigned listIndex, bool fireOnChange) { + // Check to ensure a page navigation has not occurred while + // the popup was up. + Document* doc = static_cast<Element*>(node())->document(); + if (!doc || doc != doc->frame()->document()) + return; + SelectElement* select = toSelectElement(static_cast<Element*>(node())); select->setSelectedIndexByUser(select->listToOptionIndex(listIndex), true, fireOnChange); } |