From 61d4f7e228b138538c2bb6c071eca08c8ec59fe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 18 Aug 2021 13:40:42 +0200 Subject: [PATCH] Report ImAbsolutePosition for QLineEdit ImAbsolutePosition was added in f8dbed12266c42785c1e4758eed05833ec035f33, based on requirements on Android, but without an implementation for QLineEdit. It would seem sensible to fall back to the cursor position in this case, as QLineEdit doesn't support multiple blocks. Pick-to: 6.2 Change-Id: Iff1255270ceef069f03ce457df633d7b675f1a28 Reviewed-by: Volker Hilsheimer --- src/widgets/widgets/qlineedit.cpp | 1 + tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index c45df84dcff..9422736666d 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -1855,6 +1855,7 @@ QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property, QVariant arg return d->adjustedControlRect(d->control->anchorRect()); case Qt::ImFont: return font(); + case Qt::ImAbsolutePosition: case Qt::ImCursorPosition: { const QPointF pt = argument.toPointF(); if (!pt.isNull()) diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index b3116491e36..d6c6211e01a 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -2250,6 +2250,11 @@ void tst_QLineEdit::cursorPositionChanged() input.simulate(testWidget); QCOMPARE(lastCursorPos, lastPos); QCOMPARE(newCursorPos, newPos); + + QInputMethodQueryEvent queryEvent(Qt::ImCursorPosition | Qt::ImAbsolutePosition); + QApplication::sendEvent(testWidget, &queryEvent); + QCOMPARE(queryEvent.value(Qt::ImCursorPosition).toInt(), newPos); + QCOMPARE(queryEvent.value(Qt::ImAbsolutePosition).toInt(), newPos); } void tst_QLineEdit::selectedText()