diff options
author | Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com> | 2016-03-09 10:56:19 +0100 |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com> | 2016-04-13 09:32:06 +0000 |
commit | 382ec79fab49ff490341b92056ee65a646d3ca04 (patch) | |
tree | 419449e54adf94ea4702e949004cfb8565479492 /src/widgets | |
parent | 3b188889820462658ac2078c6a41c9f8a6963d48 (diff) |
QWidgetTextControl: implement support for pos argument to ImAbsolutePosition
Implement support in QWidgetTextControl for the new API that lets
you specify a position argument when querying for Qt::ImCursorPosition.
Change-Id: I123e2522d33e783e6f3467b81be872e3620d6d15
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/widgets/qwidgettextcontrol.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index 080f22656c..cc1726c362 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -2077,8 +2077,11 @@ QVariant QWidgetTextControl::inputMethodQuery(Qt::InputMethodQuery property, QVa return d->rectForPosition(d->cursor.anchor()); case Qt::ImFont: return QVariant(d->cursor.charFormat().font()); - case Qt::ImCursorPosition: - return QVariant(d->cursor.position() - block.position()); + case Qt::ImCursorPosition: { + const QPointF pt = argument.toPointF(); + if (!pt.isNull()) + return QVariant(cursorForPosition(pt).position() - block.position()); + return QVariant(d->cursor.position() - block.position()); } case Qt::ImSurroundingText: return QVariant(block.text()); case Qt::ImCurrentSelection: @@ -2087,8 +2090,11 @@ QVariant QWidgetTextControl::inputMethodQuery(Qt::InputMethodQuery property, QVa return QVariant(); // No limit. case Qt::ImAnchorPosition: return QVariant(d->cursor.anchor() - block.position()); - case Qt::ImAbsolutePosition: - return QVariant(d->cursor.position()); + case Qt::ImAbsolutePosition: { + const QPointF pt = argument.toPointF(); + if (!pt.isNull()) + return QVariant(cursorForPosition(pt).position()); + return QVariant(d->cursor.position()); } case Qt::ImTextAfterCursor: { int maxLength = argument.isValid() ? argument.toInt() : 1024; |