diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-01-22 00:13:42 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-01-22 00:13:42 -0800 |
commit | f7e76168422a049a356179665d34ddfb74184920 (patch) | |
tree | fcec0de1891e83e86d93259cc2b46b6cee499b64 /WebKit/android/jni | |
parent | 528e2187562372a650037bc65fc4446ac2ff0772 (diff) | |
download | external_webkit-f7e76168422a049a356179665d34ddfb74184920.zip external_webkit-f7e76168422a049a356179665d34ddfb74184920.tar.gz external_webkit-f7e76168422a049a356179665d34ddfb74184920.tar.bz2 |
auto import from //branches/cupcake/...@127436
Diffstat (limited to 'WebKit/android/jni')
-rw-r--r-- | WebKit/android/jni/WebViewCore.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp index 6aa92cb..64bfd8f 100644 --- a/WebKit/android/jni/WebViewCore.cpp +++ b/WebKit/android/jni/WebViewCore.cpp @@ -1684,20 +1684,21 @@ void WebViewCore::touchUp(int touchGeneration, int buildGeneration, bool WebViewCore::handleMouseClick(WebCore::Frame* framePtr, WebCore::Node* nodePtr) { - if (framePtr && !FrameLoaderClientAndroid::get(m_mainFrame)->getCacheBuilder().validNode(framePtr, nodePtr)) - return false; + bool valid = framePtr == NULL || FrameLoaderClientAndroid::get( + m_mainFrame)->getCacheBuilder().validNode(framePtr, nodePtr); WebFrame* webFrame = WebFrame::getWebFrame(m_mainFrame); + if (valid && nodePtr) { // Need to special case area tags because an image map could have an area element in the middle // so when attempting to get the default, the point chosen would be follow the wrong link. - if (nodePtr && nodePtr->hasTagName(WebCore::HTMLNames::areaTag)) { - webFrame->setUserInitiatedClick(true); - WebCore::EventTargetNodeCast(nodePtr)->dispatchSimulatedClick(0, true, true); - webFrame->setUserInitiatedClick(false); - return true; - } - WebCore::RenderObject* renderer = nodePtr ? nodePtr->renderer() : 0; - if (renderer) { - if (renderer->isMenuList()) { + if (nodePtr->hasTagName(WebCore::HTMLNames::areaTag)) { + webFrame->setUserInitiatedClick(true); + WebCore::EventTargetNodeCast(nodePtr)->dispatchSimulatedClick(0, + true, true); + webFrame->setUserInitiatedClick(false); + return true; + } + WebCore::RenderObject* renderer = nodePtr->renderer(); + if (renderer && renderer->isMenuList()) { WebCore::HTMLSelectElement* select = static_cast<WebCore::HTMLSelectElement*>(nodePtr); const WTF::Vector<WebCore::HTMLElement*>& listItems = select->listItems(); SkTDArray<const uint16_t*> names; @@ -1727,7 +1728,7 @@ bool WebViewCore::handleMouseClick(WebCore::Frame* framePtr, WebCore::Node* node return true; } } - if (!framePtr) + if (!valid || !framePtr) framePtr = m_mainFrame; webFrame->setUserInitiatedClick(true); DBG_NAV_LOGD("m_mousePos={%d,%d}", m_mousePos.x(), m_mousePos.y()); |