diff options
author | Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com> | 2016-03-21 15:44:32 +0100 |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com> | 2016-04-13 09:32:01 +0000 |
commit | 3b188889820462658ac2078c6a41c9f8a6963d48 (patch) | |
tree | 11201eee7e64ce39de69278c460904467142c764 /src/widgets/widgets/qtextedit.cpp | |
parent | 5391f3c72f884fdea0861ceca814d247ef552397 (diff) |
QTextEdit: translate IM argument before passing it on to QWidgetTextControl
Since we now have the possibility of providing an extra
position argument when querying for Qt::ImCursorPosition, we
need to ensure that we translate it from scroll view to
local coordinates before passing it on to QWidgetTextControl.
Change-Id: I4383ae3ea984b6140d8e9b4198047aec8b7e100b
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Diffstat (limited to 'src/widgets/widgets/qtextedit.cpp')
-rw-r--r-- | src/widgets/widgets/qtextedit.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index 1dd774cf7a..68b6ea6cbe 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -1729,8 +1729,26 @@ QVariant QTextEdit::inputMethodQuery(Qt::InputMethodQuery query, QVariant argume Q_D(const QTextEdit); if (query == Qt::ImHints) return QWidget::inputMethodQuery(query); - const QVariant v = d->control->inputMethodQuery(query, argument); + const QPointF offset(-d->horizontalOffset(), -d->verticalOffset()); + switch (argument.type()) { + case QVariant::RectF: + argument = argument.toRectF().translated(-offset); + break; + case QVariant::PointF: + argument = argument.toPointF() - offset; + break; + case QVariant::Rect: + argument = argument.toRect().translated(-offset.toPoint()); + break; + case QVariant::Point: + argument = argument.toPoint() - offset; + break; + default: + break; + } + + const QVariant v = d->control->inputMethodQuery(query, argument); switch (v.type()) { case QVariant::RectF: return v.toRectF().translated(offset); |