diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp index a693f98bc5..44aa2b9120 100644 --- a/src/gui/text/qtextcontrol.cpp +++ b/src/gui/text/qtextcontrol.cpp @@ -1896,7 +1896,7 @@ QVariant QTextControl::inputMethodQuery(Qt::InputMethodQuery property) const case Qt::ImMaximumTextLength: return QVariant(); // No limit. case Qt::ImAnchorPosition: - return QVariant(qBound(0, d->cursor.anchor() - block.position(), block.length())); + return QVariant(d->cursor.anchor() - block.position()); default: return QVariant(); } diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index b2a38c3c47..c645955a8c 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -2006,7 +2006,7 @@ QVariant QWidgetTextControl::inputMethodQuery(Qt::InputMethodQuery property) con case Qt::ImMaximumTextLength: return QVariant(); // No limit. case Qt::ImAnchorPosition: - return QVariant(qBound(0, d->cursor.anchor() - block.position(), block.length())); + return QVariant(d->cursor.anchor() - block.position()); default: return QVariant(); } diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp index 66ded68a7f..d074cca64a 100644 --- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp +++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp @@ -203,6 +203,7 @@ private slots: void bidiLogicalMovement(); void inputMethodSelection(); + void inputMethodQuery(); private: void createSelection(); @@ -2386,6 +2387,18 @@ void tst_QTextEdit::inputMethodSelection() QCOMPARE(ed->textCursor().selectionEnd(), 17); } +void tst_QTextEdit::inputMethodQuery() +{ + QString text("first line of text\nsecond line of text"); + ed->setText(text); + ed->selectAll(); + + QInputMethodQueryEvent event(Qt::ImQueryInput); + QGuiApplication::sendEvent(ed, &event); + int anchor = event.value(Qt::ImAnchorPosition).toInt(); + int position = event.value(Qt::ImCursorPosition).toInt(); + QCOMPARE(qAbs(position - anchor), text.length()); +} QTEST_MAIN(tst_QTextEdit) #include "tst_qtextedit.moc"