diff options
author | Leon Scroggins III <scroggo@google.com> | 2010-08-12 12:15:11 -0400 |
---|---|---|
committer | Leon Scroggins III <scroggo@google.com> | 2010-08-16 12:41:56 -0400 |
commit | b5ad4377a34797bcff13da57e3b05587b8938353 (patch) | |
tree | 84a97ab5fe680760b4db7a9032f8af77cacd6530 | |
parent | 96b9354838038389fdab0383662e91575e3daa6c (diff) | |
download | external_webkit-b5ad4377a34797bcff13da57e3b05587b8938353.zip external_webkit-b5ad4377a34797bcff13da57e3b05587b8938353.tar.gz external_webkit-b5ad4377a34797bcff13da57e3b05587b8938353.tar.bz2 |
Move check to clear the text input to the webcore thread.
Originally written in response to bug 2835685, which was
fixed in
https://android-git.corp.google.com/g/#change,61059
WebViewCore.cpp:
Send a message to clear the text input/remove the soft
keyboard if the click results in no text input field
being in focus.
WebView.cpp:
Remove the old checks to clear the WebTextView, which
is now done in WebViewCore.cpp. This makes clearing it
consistent with the checks for opening the WebTextView.
Change-Id: I06ba7aadc95302c90af67da16edccd46896fcdbf
-rw-r--r-- | WebKit/android/jni/WebViewCore.cpp | 19 | ||||
-rw-r--r-- | WebKit/android/nav/WebView.cpp | 13 |
2 files changed, 16 insertions, 16 deletions
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp index 31c6120..6cd1280 100644 --- a/WebKit/android/jni/WebViewCore.cpp +++ b/WebKit/android/jni/WebViewCore.cpp @@ -2498,10 +2498,23 @@ bool WebViewCore::handleMouseClick(WebCore::Frame* framePtr, WebCore::Node* node } else { requestKeyboard(false); } - } else if (focusNode->isContentEditable()) { - setFocusControllerActive(framePtr, true); - requestKeyboard(true); + } else { + // If the focusNode is contentEditable, show the keyboard and enable + // the focus controller so the user can type. Otherwise hide the + // keyboard and disable the focus controller because no text input + // is needed. + bool keyboard = focusNode->isContentEditable(); + setFocusControllerActive(framePtr, keyboard); + if (keyboard) { + requestKeyboard(true); + } else { + clearTextEntry(); + } } + } else { + // There is no focusNode, so the keyboard is not needed. + setFocusControllerActive(framePtr, false); + clearTextEntry(); } return handled; } diff --git a/WebKit/android/nav/WebView.cpp b/WebKit/android/nav/WebView.cpp index efaa509..2132957 100644 --- a/WebKit/android/nav/WebView.cpp +++ b/WebKit/android/nav/WebView.cpp @@ -105,7 +105,6 @@ enum DrawExtras { // keep this in sync with WebView.java struct JavaGlue { jweak m_obj; jmethodID m_calcOurContentVisibleRectF; - jmethodID m_clearTextEntry; jmethodID m_overrideLoading; jmethodID m_scrollBy; jmethodID m_sendMoveFocus; @@ -141,7 +140,6 @@ WebView(JNIEnv* env, jobject javaWebView, int viewImpl) : m_javaGlue.m_obj = env->NewWeakGlobalRef(javaWebView); m_javaGlue.m_scrollBy = GetJMethod(env, clazz, "setContentScrollBy", "(IIZ)Z"); m_javaGlue.m_calcOurContentVisibleRectF = GetJMethod(env, clazz, "calcOurContentVisibleRectF", "(Landroid/graphics/RectF;)V"); - m_javaGlue.m_clearTextEntry = GetJMethod(env, clazz, "clearTextEntry", "(Z)V"); m_javaGlue.m_overrideLoading = GetJMethod(env, clazz, "overrideLoading", "(Ljava/lang/String;)V"); m_javaGlue.m_sendMoveFocus = GetJMethod(env, clazz, "sendMoveFocus", "(II)V"); m_javaGlue.m_sendMoveMouse = GetJMethod(env, clazz, "sendMoveMouse", "(IIII)V"); @@ -222,15 +220,6 @@ void hideCursor() viewInvalidate(); } -void clearTextEntry() -{ - DEBUG_NAV_UI_LOGD("%s", __FUNCTION__); - JNIEnv* env = JSC::Bindings::getJNIEnv(); - env->CallVoidMethod(m_javaGlue.object(env).get(), - m_javaGlue.m_clearTextEntry, true); - checkException(env); -} - #if DUMP_NAV_CACHE void debugDump() { @@ -893,7 +882,6 @@ bool motionUp(int x, int y, int slop) sendMotionUp(frame ? (WebCore::Frame*) frame->framePointer() : 0, 0, x, y); viewInvalidate(); - clearTextEntry(); return pageScrolled; } DBG_NAV_LOGD("CachedNode:%p (%d) x=%d y=%d rx=%d ry=%d", result, @@ -914,7 +902,6 @@ bool motionUp(int x, int y, int slop) } viewInvalidate(); if (!result->isTextInput()) { - clearTextEntry(); if (!result->isSelect() && !result->isContentEditable()) setFollowedLink(true); if (syntheticLink) |