OSDN Git Service

Fix a clicking bug.
authorLeon Scroggins <scroggo@google.com>
Wed, 28 Oct 2009 18:25:19 +0000 (14:25 -0400)
committerLeon Scroggins <scroggo@google.com>
Wed, 28 Oct 2009 19:09:28 +0000 (15:09 -0400)
Remove some code that simulates a mouse click at the beginning of
a textarea and the end of a textfield.  The original goal was to
make the click change the selection to be at the beginning or end
of the field, respectively.  However, we actually make another call
which prevents this click from the selection.  Further, the
selection actually gets changed elsewhere.

Fixes http://b/issue?id=2219233

WebKit/android/nav/CachedRoot.cpp
WebKit/android/nav/CachedRoot.h
WebKit/android/nav/WebView.cpp

index 9608d64..38417b1 100644 (file)
@@ -866,8 +866,7 @@ int CachedRoot::getBlockLeftEdge(int x, int y, float scale) const
     return result;
 }
 
-void CachedRoot::getSimulatedMousePosition(const CachedNode* cursor,
-    WebCore::IntPoint* point) const
+void CachedRoot::getSimulatedMousePosition(WebCore::IntPoint* point) const
 {
 #ifndef NDEBUG
     ASSERT(CachedFrame::mDebug.mInUse);
@@ -879,14 +878,6 @@ void CachedRoot::getSimulatedMousePosition(const CachedNode* cursor,
     int height = mouseBounds.height();
     point->setX(x + (width >> 1)); // default to box center
     point->setY(y + (height >> 1));
-    if (cursor && cursor->bounds().contains(mHistory->mMouseBounds)) {
-        if (cursor->isTextField()) // if text field, return end of line
-            point->setX(x + width - 1);
-        else if (cursor->isTextArea()) { // if text area, return start
-            point->setX(x + 1);
-            point->setY(y + 1);
-        }
-    }
 #if DEBUG_NAV_UI
     const WebCore::IntRect& navBounds = mHistory->mNavBounds;
     DBG_NAV_LOGD("mHistory->mNavBounds={%d,%d,%d,%d} "
index f84542c..123e7d2 100644 (file)
@@ -67,7 +67,7 @@ public:
     int getAndResetSelectionEnd();
     int getAndResetSelectionStart();
     int getBlockLeftEdge(int x, int y, float scale) const;
-    void getSimulatedMousePosition(const CachedNode* , WebCore::IntPoint* ) const;
+    void getSimulatedMousePosition(WebCore::IntPoint* ) const;
     void init(WebCore::Frame* , CachedHistory* );
     bool innerDown(const CachedNode* , BestData* ) const;
     bool innerLeft(const CachedNode* , BestData* ) const;
index 20daafc..cc90396 100644 (file)
@@ -741,8 +741,7 @@ void updateCursorBounds(const CachedRoot* root, const CachedFrame* cachedFrame,
         m_viewImpl->m_cursorBounds = cachedNode->bounds();
         m_viewImpl->m_cursorHitBounds = cachedNode->hitBounds();
         m_viewImpl->m_cursorFrame = cachedFrame->framePointer();
-        root->getSimulatedMousePosition(cachedNode,
-            &m_viewImpl->m_cursorLocation);
+        root->getSimulatedMousePosition(&m_viewImpl->m_cursorLocation);
         m_viewImpl->m_cursorNode = cachedNode->nodePointer();
     }
     m_viewImpl->gCursorBoundsMutex.unlock();
@@ -1462,7 +1461,7 @@ static jobject nativeCursorPosition(JNIEnv *env, jobject obj)
     const CachedRoot* root = view->getFrameCache(WebView::DontAllowNewer);
     WebCore::IntPoint pos = WebCore::IntPoint(0, 0);
     if (root)
-        root->getSimulatedMousePosition(root->currentCursor(), &pos);
+        root->getSimulatedMousePosition(&pos);
     jclass pointClass = env->FindClass("android/graphics/Point");
     jmethodID init = env->GetMethodID(pointClass, "<init>", "(II)V");
     jobject point = env->NewObject(pointClass, init, pos.x(), pos.y());
@@ -1929,7 +1928,7 @@ static void nativeMoveCursorToNextTextInput(JNIEnv *env, jobject obj)
     root->setCursor(const_cast<CachedFrame*>(frame),
             const_cast<CachedNode*>(next));
     WebCore::IntPoint pos;
-    root->getSimulatedMousePosition(next, &pos);
+    root->getSimulatedMousePosition(&pos);
     view->sendMoveMouse(static_cast<WebCore::Frame*>(frame->framePointer()),
             static_cast<WebCore::Node*>(next->nodePointer()), pos.x(), pos.y());
     view->scrollRectOnScreen(bounds.x(), bounds.y(), bounds.right(),