summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Moskal <[email protected]>2023-08-01 13:06:16 +0200
committerBartlomiej Moskal <[email protected]>2023-09-15 13:36:15 +0000
commit0f0ab90cf60a7169c365c8c9f46b7ccd379a10d1 (patch)
tree88b0796e10e0d7bc36193338a8326dece7d0827f
parentfca11e0112682d6049f0699e7d2a036bbec93411 (diff)
Android: Handle ImhNoTextHandles flag from InputMethodHints
[0]Qt::InputMethodHints has a flag ImhNoTextHandles that was not handled. This flag should be considered when QAndroidInputContext is updating Text handles position. What is more, this flag can be used to fix the problem with visible text cursor out of the text object. [0]https://doc.qt.io/qt-6/qt.html#InputMethodHint-enum Task-number: QTBUG-115005 Pick-to: 6.6 6.5 Change-Id: Ie50b77d7afbadfebe73f10137f09da9560aea1ba Reviewed-by: Assam Boudjelthia <[email protected]> Reviewed-by: Rami Potinkara <[email protected]>
-rw-r--r--src/plugins/platforms/android/qandroidinputcontext.cpp13
-rw-r--r--src/plugins/platforms/android/qandroidinputcontext.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp
index 5d539d7da43..d2eb05c24d5 100644
--- a/src/plugins/platforms/android/qandroidinputcontext.cpp
+++ b/src/plugins/platforms/android/qandroidinputcontext.cpp
@@ -531,12 +531,25 @@ void QAndroidInputContext::updateCursorPosition()
}
}
+bool QAndroidInputContext::isImhNoTextHandlesSet()
+{
+ QSharedPointer<QInputMethodQueryEvent> query = focusObjectInputMethodQuery();
+ if (query.isNull())
+ return false;
+ return query->value(Qt::ImHints).toUInt() & Qt::ImhNoTextHandles;
+}
+
void QAndroidInputContext::updateSelectionHandles()
{
static bool noHandles = qEnvironmentVariableIntValue("QT_QPA_NO_TEXT_HANDLES");
if (noHandles || !m_focusObject)
return;
+ if (isImhNoTextHandlesSet()) {
+ QtAndroidInput::updateHandles(Hidden);
+ return;
+ }
+
auto im = qGuiApp->inputMethod();
QInputMethodQueryEvent query(Qt::ImCursorPosition | Qt::ImAnchorPosition | Qt::ImEnabled
diff --git a/src/plugins/platforms/android/qandroidinputcontext.h b/src/plugins/platforms/android/qandroidinputcontext.h
index c93aae142a9..3fa07589f0e 100644
--- a/src/plugins/platforms/android/qandroidinputcontext.h
+++ b/src/plugins/platforms/android/qandroidinputcontext.h
@@ -113,6 +113,7 @@ private slots:
void showInputPanelLater(Qt::ApplicationState);
private:
+ bool isImhNoTextHandlesSet();
void sendInputMethodEvent(QInputMethodEvent *event);
QSharedPointer<QInputMethodQueryEvent> focusObjectInputMethodQuery(Qt::InputMethodQueries queries = Qt::ImQueryAll);
bool focusObjectIsComposing() const;