diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-22 15:40:17 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-22 15:40:17 +0200 |
commit | 43a42f108af6bcbd91f2672731c3047c26213af1 (patch) | |
tree | 7fa092e5f5d873c72f2486a70e26be26f7a38bec /Source/WebKit/chromium/src/WebPagePopupImpl.cpp | |
parent | d9cf437c840c6eb7417bdd97e6c40979255d3158 (diff) | |
download | qtwebkit-43a42f108af6bcbd91f2672731c3047c26213af1.tar.gz |
Imported WebKit commit 302e7806bff028bd1167a1ec7c86a1ee00ecfb49 (http://svn.webkit.org/repository/webkit/trunk@132067)
New snapshot that fixes build without QtWidgets
Diffstat (limited to 'Source/WebKit/chromium/src/WebPagePopupImpl.cpp')
-rw-r--r-- | Source/WebKit/chromium/src/WebPagePopupImpl.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/Source/WebKit/chromium/src/WebPagePopupImpl.cpp b/Source/WebKit/chromium/src/WebPagePopupImpl.cpp index e4808fd70..078ae7e86 100644 --- a/Source/WebKit/chromium/src/WebPagePopupImpl.cpp +++ b/Source/WebKit/chromium/src/WebPagePopupImpl.cpp @@ -142,6 +142,7 @@ bool PagePopupFeaturesClient::isEnabled(Document*, ContextFeatures::FeatureType WebPagePopupImpl::WebPagePopupImpl(WebWidgetClient* client) : m_widgetClient(client) + , m_closing(false) { ASSERT(client); } @@ -259,7 +260,7 @@ bool WebPagePopupImpl::handleCharEvent(const WebKeyboardEvent&) #if ENABLE(GESTURE_EVENTS) bool WebPagePopupImpl::handleGestureEvent(const WebGestureEvent& event) { - if (!m_page || !m_page->mainFrame() || !m_page->mainFrame()->view()) + if (m_closing || !m_page || !m_page->mainFrame() || !m_page->mainFrame()->view()) return false; Frame& frame = *m_page->mainFrame(); return frame.eventHandler()->handleGestureEvent(PlatformGestureEventBuilder(frame.view(), event)); @@ -268,12 +269,14 @@ bool WebPagePopupImpl::handleGestureEvent(const WebGestureEvent& event) bool WebPagePopupImpl::handleInputEvent(const WebInputEvent& event) { + if (m_closing) + return false; return PageWidgetDelegate::handleInputEvent(m_page.get(), *this, event); } bool WebPagePopupImpl::handleKeyEvent(const PlatformKeyboardEvent& event) { - if (!m_page->mainFrame() || !m_page->mainFrame()->view()) + if (m_closing || !m_page->mainFrame() || !m_page->mainFrame()->view()) return false; return m_page->mainFrame()->eventHandler()->keyEvent(event); } @@ -302,7 +305,9 @@ void WebPagePopupImpl::closePopup() m_page->setGroupName(String()); m_page->mainFrame()->loader()->stopAllLoaders(); m_page->mainFrame()->loader()->stopLoading(UnloadEventPolicyNone); + DOMWindowPagePopup::uninstall(m_page->mainFrame()->document()->domWindow()); } + m_closing = true; // m_widgetClient might be 0 because this widget might be already closed. if (m_widgetClient) { // closeWidgetSoon() will call this->close() later. |