From f6fd8dceeab120cd9c0cfd68d06c916963ba796a Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Fri, 15 Dec 2017 15:31:00 +0200 Subject: Remove text selection handles when keyboard is hidden Task-number: QTBUG-58700 Change-Id: I094f31250ec879b0f08f27499794946cac2084e6 Reviewed-by: Corey Pendleton Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/plugins/platforms/android/androidjniinput.cpp | 4 +++- src/plugins/platforms/android/qandroidinputcontext.cpp | 9 +++++++++ src/plugins/platforms/android/qandroidinputcontext.h | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp index dabab553c2..c4142a9b6e 100644 --- a/src/plugins/platforms/android/androidjniinput.cpp +++ b/src/plugins/platforms/android/androidjniinput.cpp @@ -805,8 +805,10 @@ namespace QtAndroidInput QAndroidInputContext *inputContext = QAndroidInputContext::androidInputContext(); if (inputContext && qGuiApp) { inputContext->emitInputPanelVisibleChanged(); - if (!visibility) + if (!visibility) { inputContext->emitKeyboardRectChanged(); + QMetaObject::invokeMethod(inputContext, "hideSelectionHandles", Qt::QueuedConnection); + } } #ifdef QT_DEBUG_ANDROID_IM_PROTOCOL qDebug() << "@@@ KEYBOARDVISIBILITYCHANGED" << inputContext; diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp index fe35c13e26..d6da1998cf 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.cpp +++ b/src/plugins/platforms/android/qandroidinputcontext.cpp @@ -593,6 +593,7 @@ void QAndroidInputContext::updateSelectionHandles() return; } + m_handleMode |= ShowSelection; auto leftRect = im->cursorRectangle(); auto rightRect = im->anchorRectangle(); if (cpos > anchor) @@ -741,6 +742,14 @@ void QAndroidInputContext::keyDown() } } +void QAndroidInputContext::hideSelectionHandles() +{ + if (m_handleMode & ShowSelection) { + m_handleMode = Hidden; + updateSelectionHandles(); + } +} + void QAndroidInputContext::update(Qt::InputMethodQueries queries) { QSharedPointer query = focusObjectInputMethodQueryThreadSafe(queries); diff --git a/src/plugins/platforms/android/qandroidinputcontext.h b/src/plugins/platforms/android/qandroidinputcontext.h index 65822b0d60..a6e22fa4f7 100644 --- a/src/plugins/platforms/android/qandroidinputcontext.h +++ b/src/plugins/platforms/android/qandroidinputcontext.h @@ -132,6 +132,7 @@ public slots: void touchDown(int x, int y); void longPress(int x, int y); void keyDown(); + void hideSelectionHandles(); private slots: void showInputPanelLater(Qt::ApplicationState); -- cgit v1.2.3