diff options
Diffstat (limited to 'src/quick/items/qquicktextcontrol.cpp')
-rw-r--r-- | src/quick/items/qquicktextcontrol.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/quick/items/qquicktextcontrol.cpp b/src/quick/items/qquicktextcontrol.cpp index ab460034bb..e2f4d51542 100644 --- a/src/quick/items/qquicktextcontrol.cpp +++ b/src/quick/items/qquicktextcontrol.cpp @@ -1384,10 +1384,16 @@ QVariant QQuickTextControl::inputMethodQuery(Qt::InputMethodQuery property, QVar switch (property) { case Qt::ImCursorRectangle: return cursorRect(); + case Qt::ImAnchorRectangle: + return anchorRect(); case Qt::ImFont: return QVariant(d->cursor.charFormat().font()); - case Qt::ImCursorPosition: + case Qt::ImCursorPosition: { + const QPointF pt = argument.toPointF(); + if (!pt.isNull()) + return QVariant(d->doc->documentLayout()->hitTest(pt, Qt::FuzzyHit) - block.position()); return QVariant(d->cursor.position() - block.position()); + } case Qt::ImSurroundingText: return QVariant(block.text()); case Qt::ImCurrentSelection: @@ -1497,6 +1503,17 @@ void QQuickTextControl::setCursorVisible(bool visible) && (d->interactionFlags & (Qt::TextEditable | Qt::TextSelectableByKeyboard))); } +QRectF QQuickTextControl::anchorRect() const +{ + Q_D(const QQuickTextControl); + QRectF rect; + QTextCursor cursor = d->cursor; + if (!cursor.isNull()) { + rect = d->rectForPosition(cursor.anchor()); + } + return rect; +} + QRectF QQuickTextControl::cursorRect(const QTextCursor &cursor) const { Q_D(const QQuickTextControl); |