From ab67a5b7b631709aae779c767a903b8982fa7f8e Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 11 Apr 2016 14:06:02 +0200 Subject: QLineEdit: add support for ImCursorPosition with position argument MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow up f8dbed12, and implement support for IM queries that can take an extra QVariant argument. We use this to implement support for ImCursorPosition with a QPointF argument that specifies that we should return the text position under the given point rather than the current cursor pos (0bb645b). Change-Id: I03ae7af698241f454d35dec84f248ecd5bb6ad51 Reviewed-by: Jan Arve Sæther --- src/widgets/widgets/qlineedit.cpp | 14 +++++++++++--- src/widgets/widgets/qlineedit.h | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 3cdd7dc0f0..5e88c2034a 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -1745,9 +1745,14 @@ void QLineEdit::inputMethodEvent(QInputMethodEvent *e) #endif } +QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property) const +{ + return inputMethodQuery(property, QVariant()); +} + /*!\reimp */ -QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property) const +QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property, QVariant argument) const { Q_D(const QLineEdit); switch(property) { @@ -1755,8 +1760,11 @@ QVariant QLineEdit::inputMethodQuery(Qt::InputMethodQuery property) const return d->cursorRect(); case Qt::ImFont: return font(); - case Qt::ImCursorPosition: - return QVariant(d->control->cursor()); + case Qt::ImCursorPosition: { + const QPointF pt = argument.toPointF(); + if (!pt.isNull()) + return QVariant(d->xToPos(pt.x(), QTextLine::CursorBetweenCharacters)); + return QVariant(d->control->cursor()); } case Qt::ImSurroundingText: return QVariant(d->control->text()); case Qt::ImCurrentSelection: diff --git a/src/widgets/widgets/qlineedit.h b/src/widgets/widgets/qlineedit.h index 6a24daa873..12fd998c45 100644 --- a/src/widgets/widgets/qlineedit.h +++ b/src/widgets/widgets/qlineedit.h @@ -228,6 +228,7 @@ protected: void initStyleOption(QStyleOptionFrame *option) const; public: QVariant inputMethodQuery(Qt::InputMethodQuery) const Q_DECL_OVERRIDE; + Q_INVOKABLE QVariant inputMethodQuery(Qt::InputMethodQuery property, QVariant argument) const; bool event(QEvent *) Q_DECL_OVERRIDE; protected: QRect cursorRect() const; -- cgit v1.2.3