diff options
Diffstat (limited to 'WebKit/android/jni')
| -rw-r--r-- | WebKit/android/jni/WebViewCore.cpp | 15 | ||||
| -rw-r--r-- | WebKit/android/jni/WebViewCore.h | 2 |
2 files changed, 11 insertions, 6 deletions
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp index ee1f880..85b00e6 100644 --- a/WebKit/android/jni/WebViewCore.cpp +++ b/WebKit/android/jni/WebViewCore.cpp @@ -294,7 +294,7 @@ WebViewCore::WebViewCore(JNIEnv* env, jobject javaWebViewCore, WebCore::Frame* m m_javaGlue->m_restoreScale = GetJMethod(env, clazz, "restoreScale", "(I)V"); m_javaGlue->m_restoreScreenWidthScale = GetJMethod(env, clazz, "restoreScreenWidthScale", "(I)V"); m_javaGlue->m_needTouchEvents = GetJMethod(env, clazz, "needTouchEvents", "(Z)V"); - m_javaGlue->m_requestKeyboard = GetJMethod(env, clazz, "requestKeyboard", "(Z)V"); + m_javaGlue->m_requestKeyboard = GetJMethod(env, clazz, "requestKeyboard", "(ZZ)V"); m_javaGlue->m_exceededDatabaseQuota = GetJMethod(env, clazz, "exceededDatabaseQuota", "(Ljava/lang/String;Ljava/lang/String;JJ)V"); m_javaGlue->m_reachedMaxAppCacheSize = GetJMethod(env, clazz, "reachedMaxAppCacheSize", "(J)V"); m_javaGlue->m_populateVisitedLinks = GetJMethod(env, clazz, "populateVisitedLinks", "()V"); @@ -1049,7 +1049,7 @@ void WebViewCore::needTouchEvents(bool need) #endif } -void WebViewCore::requestKeyboard(bool showKeyboard) +void WebViewCore::requestKeyboard(bool showKeyboard, bool isTextView) { DBG_NAV_LOGD("showKeyboard=%d", showKeyboard); LOG_ASSERT(m_javaGlue->m_obj, "A Java widget was not associated with this view bridge!"); @@ -1060,7 +1060,8 @@ void WebViewCore::requestKeyboard(bool showKeyboard) // can be gone. Check before using it. if (!obj.get()) return; - env->CallVoidMethod(obj.get(), m_javaGlue->m_requestKeyboard, showKeyboard); + env->CallVoidMethod(obj.get(), m_javaGlue->m_requestKeyboard, showKeyboard, + isTextView); checkException(env); } @@ -2294,8 +2295,12 @@ bool WebViewCore::handleMouseClick(WebCore::Frame* framePtr, WebCore::Node* node m_mousePos.y(), focusNode, handled ? "true" : "false"); if (focusNode) { WebCore::RenderObject* renderer = focusNode->renderer(); - if (renderer && (renderer->isTextField() || renderer->isTextArea())) - setFocusControllerActive(true); + if (renderer && (renderer->isTextField() || renderer->isTextArea())) { + bool ime = !(static_cast<WebCore::HTMLInputElement*>(focusNode)) + ->readOnly(); + setFocusControllerActive(ime); + requestKeyboard(ime, true); + } } return handled; } diff --git a/WebKit/android/jni/WebViewCore.h b/WebKit/android/jni/WebViewCore.h index 912b8e6..9c9c510 100644 --- a/WebKit/android/jni/WebViewCore.h +++ b/WebKit/android/jni/WebViewCore.h @@ -379,7 +379,7 @@ namespace android { void needTouchEvents(bool); // Notify the Java side that webkit is requesting a keyboard - void requestKeyboard(bool); + void requestKeyboard(bool showKeyboard, bool isTextView); // Generates a class loader that contains classes from the plugin's apk jclass getPluginClass(const WebCore::String& libName, const char* className); |
