Fixed inputMethodQuery() for Qt::ImHints
authorTasuku Suzuki <tasuku.suzuki@nokia.com>
Mon, 21 May 2012 23:14:34 +0000 (08:14 +0900)
committerQt by Nokia <qt-info@nokia.com>
Tue, 26 Jun 2012 06:14:17 +0000 (08:14 +0200)
to return QWidget::inputMethodHints()

Change-Id: I46735c553e0cb4689cd0c53a69d07ed61ba56bf6
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
src/widgets/widgets/qplaintextedit.cpp
src/widgets/widgets/qtextedit.cpp
tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp

index c31ac65..60160c9 100644 (file)
@@ -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;
 }
 
index 3dbd247..c9de35a 100644 (file)
@@ -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;
 }
 
index 1052bb2..79f5a1a 100644 (file)
@@ -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"
index 88489f4..6b6882e 100644 (file)
@@ -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"