summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@theqtcompany.com>2016-03-21 15:44:32 +0100
committerRichard Moe Gustavsen <richard.gustavsen@theqtcompany.com>2016-04-13 09:32:01 +0000
commit3b188889820462658ac2078c6a41c9f8a6963d48 (patch)
tree11201eee7e64ce39de69278c460904467142c764 /src/widgets/widgets
parent5391f3c72f884fdea0861ceca814d247ef552397 (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')
-rw-r--r--src/widgets/widgets/qplaintextedit.cpp20
-rw-r--r--src/widgets/widgets/qtextedit.cpp20
2 files changed, 38 insertions, 2 deletions
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp
index 17eac9db58..35ec88b881 100644
--- a/src/widgets/widgets/qplaintextedit.cpp
+++ b/src/widgets/widgets/qplaintextedit.cpp
@@ -2199,8 +2199,26 @@ QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery query, QVariant a
Q_D(const QPlainTextEdit);
if (query == Qt::ImHints)
return QWidget::inputMethodQuery(query);
- const QVariant v = d->control->inputMethodQuery(query, argument);
+
const QPointF offset = contentOffset();
+ 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);
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);