summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/widgets/qplaintextedit.cpp28
-rw-r--r--src/widgets/widgets/qtextedit.cpp28
-rw-r--r--tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp20
-rw-r--r--tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp21
4 files changed, 77 insertions, 20 deletions
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp
index c31ac65046..60160c91c3 100644
--- a/src/widgets/widgets/qplaintextedit.cpp
+++ b/src/widgets/widgets/qplaintextedit.cpp
@@ -2127,16 +2127,24 @@ void QPlainTextEdit::scrollContentsBy(int dx, int /*dy*/)
QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const
{
Q_D(const QPlainTextEdit);
- QVariant v = d->control->inputMethodQuery(property);
- const QPoint offset(-d->horizontalOffset(), -0);
- if (v.type() == QVariant::RectF)
- v = v.toRectF().toRect().translated(offset);
- else if (v.type() == QVariant::PointF)
- v = v.toPointF().toPoint() + offset;
- else if (v.type() == QVariant::Rect)
- v = v.toRect().translated(offset);
- else if (v.type() == QVariant::Point)
- v = v.toPoint() + offset;
+ QVariant v;
+ switch (property) {
+ case Qt::ImHints:
+ v = QWidget::inputMethodQuery(property);
+ break;
+ default:
+ v = d->control->inputMethodQuery(property);
+ const QPoint offset(-d->horizontalOffset(), -0);
+ if (v.type() == QVariant::RectF)
+ v = v.toRectF().toRect().translated(offset);
+ else if (v.type() == QVariant::PointF)
+ v = v.toPointF().toPoint() + offset;
+ else if (v.type() == QVariant::Rect)
+ v = v.toRect().translated(offset);
+ else if (v.type() == QVariant::Point)
+ v = v.toPoint() + offset;
+ }
+
return v;
}
diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp
index 3dbd24705b..c9de35a261 100644
--- a/src/widgets/widgets/qtextedit.cpp
+++ b/src/widgets/widgets/qtextedit.cpp
@@ -1665,16 +1665,24 @@ void QTextEdit::scrollContentsBy(int dx, int dy)
QVariant QTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const
{
Q_D(const QTextEdit);
- QVariant v = d->control->inputMethodQuery(property);
- const QPoint offset(-d->horizontalOffset(), -d->verticalOffset());
- if (v.type() == QVariant::RectF)
- v = v.toRectF().toRect().translated(offset);
- else if (v.type() == QVariant::PointF)
- v = v.toPointF().toPoint() + offset;
- else if (v.type() == QVariant::Rect)
- v = v.toRect().translated(offset);
- else if (v.type() == QVariant::Point)
- v = v.toPoint() + offset;
+ QVariant v;
+ switch (property) {
+ case Qt::ImHints:
+ v = QWidget::inputMethodQuery(property);
+ break;
+ default:
+ v = d->control->inputMethodQuery(property);
+ const QPoint offset(-d->horizontalOffset(), -d->verticalOffset());
+ if (v.type() == QVariant::RectF)
+ v = v.toRectF().toRect().translated(offset);
+ else if (v.type() == QVariant::PointF)
+ v = v.toPointF().toPoint() + offset;
+ else if (v.type() == QVariant::Rect)
+ v = v.toRect().translated(offset);
+ else if (v.type() == QVariant::Point)
+ v = v.toPoint() + offset;
+ }
+
return v;
}
diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
index 1052bb2103..79f5a1a3a3 100644
--- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
@@ -148,6 +148,8 @@ private slots:
void selectionChanged();
void blockCountChanged();
void insertAndScrollToBottom();
+ void inputMethodQueryImHints_data();
+ void inputMethodQueryImHints();
private:
void createSelection();
@@ -1516,6 +1518,24 @@ void tst_QPlainTextEdit::insertAndScrollToBottom()
QCOMPARE(ed->verticalScrollBar()->value(), ed->verticalScrollBar()->maximum());
}
+Q_DECLARE_METATYPE(Qt::InputMethodHints)
+void tst_QPlainTextEdit::inputMethodQueryImHints_data()
+{
+ QTest::addColumn<Qt::InputMethodHints>("hints");
+
+ QTest::newRow("None") << static_cast<Qt::InputMethodHints>(Qt::ImhNone);
+ QTest::newRow("Password") << static_cast<Qt::InputMethodHints>(Qt::ImhHiddenText);
+ QTest::newRow("Normal") << static_cast<Qt::InputMethodHints>(Qt::ImhNoAutoUppercase | Qt::ImhNoPredictiveText | Qt::ImhSensitiveData);
+}
+
+void tst_QPlainTextEdit::inputMethodQueryImHints()
+{
+ QFETCH(Qt::InputMethodHints, hints);
+ ed->setInputMethodHints(hints);
+
+ QVariant value = ed->inputMethodQuery(Qt::ImHints);
+ QCOMPARE(static_cast<Qt::InputMethodHints>(value.toInt()), hints);
+}
QTEST_MAIN(tst_QPlainTextEdit)
#include "tst_qplaintextedit.moc"
diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
index 88489f4328..6b6882e0cf 100644
--- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
+++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
@@ -209,6 +209,8 @@ private slots:
void inputMethodEvent();
void inputMethodSelection();
void inputMethodQuery();
+ void inputMethodQueryImHints_data();
+ void inputMethodQueryImHints();
private:
void createSelection();
@@ -2462,5 +2464,24 @@ void tst_QTextEdit::inputMethodQuery()
QCOMPARE(event.value(Qt::ImEnabled).toBool(), false);
}
+Q_DECLARE_METATYPE(Qt::InputMethodHints)
+void tst_QTextEdit::inputMethodQueryImHints_data()
+{
+ QTest::addColumn<Qt::InputMethodHints>("hints");
+
+ QTest::newRow("None") << static_cast<Qt::InputMethodHints>(Qt::ImhNone);
+ QTest::newRow("Password") << static_cast<Qt::InputMethodHints>(Qt::ImhHiddenText);
+ QTest::newRow("Normal") << static_cast<Qt::InputMethodHints>(Qt::ImhNoAutoUppercase | Qt::ImhNoPredictiveText | Qt::ImhSensitiveData);
+}
+
+void tst_QTextEdit::inputMethodQueryImHints()
+{
+ QFETCH(Qt::InputMethodHints, hints);
+ ed->setInputMethodHints(hints);
+
+ QVariant value = ed->inputMethodQuery(Qt::ImHints);
+ QCOMPARE(static_cast<Qt::InputMethodHints>(value.toInt()), hints);
+}
+
QTEST_MAIN(tst_QTextEdit)
#include "tst_qtextedit.moc"