QWidget editors to return correct value for Qt::ImEnabled
Qt::ImEnabled input method query was added for Qt5. Enhancing source compatibility with Qt4 by setting query value in QWidget if widget does not return any valid value. Change-Id: I274c1f6c47a5cb08ecf550b25e5b358622e21d90 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Joona Petrell <joona.t.petrell@nokia.com>
This commit is contained in:
parent
8ecc2da31d
commit
a3a0b03735
@ -7929,6 +7929,8 @@ bool QWidget::event(QEvent *event)
|
||||
Qt::InputMethodQuery q = (Qt::InputMethodQuery)(int)(queries & (1<<i));
|
||||
if (q) {
|
||||
QVariant v = inputMethodQuery(q);
|
||||
if (q == Qt::ImEnabled && !v.isValid() && isEnabled())
|
||||
v = QVariant(true); // special case for Qt4 compatibility
|
||||
query->setValue(q, v);
|
||||
}
|
||||
}
|
||||
|
@ -273,6 +273,7 @@ private slots:
|
||||
void bidiLogicalMovement();
|
||||
|
||||
void selectAndCursorPosition();
|
||||
void inputMethod();
|
||||
void inputMethodSelection();
|
||||
void inputMethodTentativeCommit();
|
||||
|
||||
@ -3805,6 +3806,18 @@ void tst_QLineEdit::selectAndCursorPosition()
|
||||
QCOMPARE(testWidget->cursorPosition(), 0);
|
||||
}
|
||||
|
||||
void tst_QLineEdit::inputMethod()
|
||||
{
|
||||
// widget accepts input
|
||||
QInputMethodQueryEvent queryEvent(Qt::ImEnabled);
|
||||
QApplication::sendEvent(testWidget, &queryEvent);
|
||||
QCOMPARE(queryEvent.value(Qt::ImEnabled).toBool(), true);
|
||||
|
||||
testWidget->setEnabled(false);
|
||||
QApplication::sendEvent(testWidget, &queryEvent);
|
||||
QCOMPARE(queryEvent.value(Qt::ImEnabled).toBool(), false);
|
||||
}
|
||||
|
||||
void tst_QLineEdit::inputMethodSelection()
|
||||
{
|
||||
testWidget->setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
|
||||
|
@ -2407,11 +2407,16 @@ void tst_QTextEdit::inputMethodQuery()
|
||||
ed->setText(text);
|
||||
ed->selectAll();
|
||||
|
||||
QInputMethodQueryEvent event(Qt::ImQueryInput);
|
||||
QInputMethodQueryEvent event(Qt::ImQueryInput | Qt::ImEnabled);
|
||||
QGuiApplication::sendEvent(ed, &event);
|
||||
int anchor = event.value(Qt::ImAnchorPosition).toInt();
|
||||
int position = event.value(Qt::ImCursorPosition).toInt();
|
||||
QCOMPARE(qAbs(position - anchor), text.length());
|
||||
QCOMPARE(event.value(Qt::ImEnabled).toBool(), true);
|
||||
|
||||
ed->setEnabled(false);
|
||||
QGuiApplication::sendEvent(ed, &event);
|
||||
QCOMPARE(event.value(Qt::ImEnabled).toBool(), false);
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QTextEdit)
|
||||
|
Loading…
Reference in New Issue
Block a user