diff options
author | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-12-08 07:09:26 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-12-08 07:09:47 +0100 |
commit | 3ec31ef9c5acd57a4a59c0d5f5e20b8d9a19bfa1 (patch) | |
tree | 8b55dd13dbc2a33fe7c857f622e10b817386bdb3 /src/plugins/platforms/android | |
parent | 6f87f2d23fb50d8183ea173fe423b7e1a24c0e2e (diff) | |
parent | 4ad8798de428b44fe4c56e1ca111940068056c57 (diff) |
Merge remote-tracking branch 'origin/5.6' into dev
Change-Id: I2532c7f7db5e6cc3ef09753d886279816dd662b2
Diffstat (limited to 'src/plugins/platforms/android')
-rw-r--r-- | src/plugins/platforms/android/androidjniinput.cpp | 32 | ||||
-rw-r--r-- | src/plugins/platforms/android/androidjniinput.h | 2 | ||||
-rw-r--r-- | src/plugins/platforms/android/qandroidinputcontext.cpp | 2 |
3 files changed, 33 insertions, 3 deletions
diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp index 8982787ec9..9cc5e95378 100644 --- a/src/plugins/platforms/android/androidjniinput.cpp +++ b/src/plugins/platforms/android/androidjniinput.cpp @@ -51,6 +51,7 @@ namespace QtAndroidInput static bool m_ignoreMouseEvents = false; static bool m_softwareKeyboardVisible = false; + static QRect m_softwareKeyboardRect; static QList<QWindowSystemInterface::TouchPoint> m_touchPoints; @@ -108,6 +109,11 @@ namespace QtAndroidInput return m_softwareKeyboardVisible; } + QRect softwareKeyboardRect() + { + return m_softwareKeyboardRect; + } + static void mouseDown(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y) { @@ -734,14 +740,35 @@ namespace QtAndroidInput static void keyboardVisibilityChanged(JNIEnv */*env*/, jobject /*thiz*/, jboolean visibility) { m_softwareKeyboardVisible = visibility; + if (!visibility) + m_softwareKeyboardRect = QRect(); + QAndroidInputContext *inputContext = QAndroidInputContext::androidInputContext(); - if (inputContext && qGuiApp) + if (inputContext && qGuiApp) { inputContext->emitInputPanelVisibleChanged(); + if (!visibility) + inputContext->emitKeyboardRectChanged(); + } #ifdef QT_DEBUG_ANDROID_IM_PROTOCOL qDebug() << "@@@ KEYBOARDVISIBILITYCHANGED" << inputContext; #endif } + static void keyboardGeometryChanged(JNIEnv */*env*/, jobject /*thiz*/, jint x, jint y, jint w, jint h) + { + QRect r = QRect(x, y, w, h); + if (r == m_softwareKeyboardRect) + return; + m_softwareKeyboardRect = r; + QAndroidInputContext *inputContext = QAndroidInputContext::androidInputContext(); + if (inputContext && qGuiApp) + inputContext->emitKeyboardRectChanged(); + +#ifdef QT_DEBUG_ANDROID_IM_PROTOCOL + qDebug() << "@@@ KEYBOARDRECTCHANGED" << m_softwareKeyboardRect; +#endif + } + static JNINativeMethod methods[] = { {"touchBegin","(I)V",(void*)touchBegin}, {"touchAdd","(IIIZIIFF)V",(void*)touchAdd}, @@ -753,7 +780,8 @@ namespace QtAndroidInput {"tabletEvent", "(IIJIIIFFF)V", (void *)tabletEvent}, {"keyDown", "(IIIZ)V", (void *)keyDown}, {"keyUp", "(IIIZ)V", (void *)keyUp}, - {"keyboardVisibilityChanged", "(Z)V", (void *)keyboardVisibilityChanged} + {"keyboardVisibilityChanged", "(Z)V", (void *)keyboardVisibilityChanged}, + {"keyboardGeometryChanged", "(IIII)V", (void *)keyboardGeometryChanged} }; bool registerNatives(JNIEnv *env) diff --git a/src/plugins/platforms/android/androidjniinput.h b/src/plugins/platforms/android/androidjniinput.h index d737dc9c98..7132d1fc4e 100644 --- a/src/plugins/platforms/android/androidjniinput.h +++ b/src/plugins/platforms/android/androidjniinput.h @@ -35,6 +35,7 @@ #define ANDROIDJNIINPUT_H #include <jni.h> #include <QtCore/qglobal.h> +#include <QtCore/QRect> QT_BEGIN_NAMESPACE @@ -45,6 +46,7 @@ namespace QtAndroidInput void resetSoftwareKeyboard(); void hideSoftwareKeyboard(); bool isSoftwareKeyboardVisible(); + QRect softwareKeyboardRect(); void updateSelection(int selStart, int selEnd, int candidatesStart, int candidatesEnd); // Software keyboard support diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp index 92c0c2cf0f..2e4c3d71ab 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.cpp +++ b/src/plugins/platforms/android/qandroidinputcontext.cpp @@ -512,7 +512,7 @@ void QAndroidInputContext::invokeAction(QInputMethod::Action action, int cursorP QRectF QAndroidInputContext::keyboardRect() const { - return QPlatformInputContext::keyboardRect(); + return QtAndroidInput::softwareKeyboardRect(); } bool QAndroidInputContext::isAnimating() const |