Fixed inputMethodQuery() for Qt::ImHints

to return QWidget::inputMethodHints()

Change-Id: I46735c553e0cb4689cd0c53a69d07ed61ba56bf6
Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
This commit is contained in:
Tasuku Suzuki 2012-05-22 08:14:34 +09:00 committed by Qt by Nokia
parent 0a6dc44f24
commit 197b145a23
4 changed files with 77 additions and 20 deletions

View File

@ -2127,16 +2127,24 @@ void QPlainTextEdit::scrollContentsBy(int dx, int /*dy*/)
QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const
{ {
Q_D(const QPlainTextEdit); Q_D(const QPlainTextEdit);
QVariant v = d->control->inputMethodQuery(property); QVariant v;
const QPoint offset(-d->horizontalOffset(), -0); switch (property) {
if (v.type() == QVariant::RectF) case Qt::ImHints:
v = v.toRectF().toRect().translated(offset); v = QWidget::inputMethodQuery(property);
else if (v.type() == QVariant::PointF) break;
v = v.toPointF().toPoint() + offset; default:
else if (v.type() == QVariant::Rect) v = d->control->inputMethodQuery(property);
v = v.toRect().translated(offset); const QPoint offset(-d->horizontalOffset(), -0);
else if (v.type() == QVariant::Point) if (v.type() == QVariant::RectF)
v = v.toPoint() + offset; 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; return v;
} }

View File

@ -1665,16 +1665,24 @@ void QTextEdit::scrollContentsBy(int dx, int dy)
QVariant QTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const QVariant QTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const
{ {
Q_D(const QTextEdit); Q_D(const QTextEdit);
QVariant v = d->control->inputMethodQuery(property); QVariant v;
const QPoint offset(-d->horizontalOffset(), -d->verticalOffset()); switch (property) {
if (v.type() == QVariant::RectF) case Qt::ImHints:
v = v.toRectF().toRect().translated(offset); v = QWidget::inputMethodQuery(property);
else if (v.type() == QVariant::PointF) break;
v = v.toPointF().toPoint() + offset; default:
else if (v.type() == QVariant::Rect) v = d->control->inputMethodQuery(property);
v = v.toRect().translated(offset); const QPoint offset(-d->horizontalOffset(), -d->verticalOffset());
else if (v.type() == QVariant::Point) if (v.type() == QVariant::RectF)
v = v.toPoint() + offset; 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; return v;
} }

View File

@ -148,6 +148,8 @@ private slots:
void selectionChanged(); void selectionChanged();
void blockCountChanged(); void blockCountChanged();
void insertAndScrollToBottom(); void insertAndScrollToBottom();
void inputMethodQueryImHints_data();
void inputMethodQueryImHints();
private: private:
void createSelection(); void createSelection();
@ -1516,6 +1518,24 @@ void tst_QPlainTextEdit::insertAndScrollToBottom()
QCOMPARE(ed->verticalScrollBar()->value(), ed->verticalScrollBar()->maximum()); 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) QTEST_MAIN(tst_QPlainTextEdit)
#include "tst_qplaintextedit.moc" #include "tst_qplaintextedit.moc"

View File

@ -209,6 +209,8 @@ private slots:
void inputMethodEvent(); void inputMethodEvent();
void inputMethodSelection(); void inputMethodSelection();
void inputMethodQuery(); void inputMethodQuery();
void inputMethodQueryImHints_data();
void inputMethodQueryImHints();
private: private:
void createSelection(); void createSelection();
@ -2462,5 +2464,24 @@ void tst_QTextEdit::inputMethodQuery()
QCOMPARE(event.value(Qt::ImEnabled).toBool(), false); 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) QTEST_MAIN(tst_QTextEdit)
#include "tst_qtextedit.moc" #include "tst_qtextedit.moc"