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));
|
Qt::InputMethodQuery q = (Qt::InputMethodQuery)(int)(queries & (1<<i));
|
||||||
if (q) {
|
if (q) {
|
||||||
QVariant v = inputMethodQuery(q);
|
QVariant v = inputMethodQuery(q);
|
||||||
|
if (q == Qt::ImEnabled && !v.isValid() && isEnabled())
|
||||||
|
v = QVariant(true); // special case for Qt4 compatibility
|
||||||
query->setValue(q, v);
|
query->setValue(q, v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -273,6 +273,7 @@ private slots:
|
|||||||
void bidiLogicalMovement();
|
void bidiLogicalMovement();
|
||||||
|
|
||||||
void selectAndCursorPosition();
|
void selectAndCursorPosition();
|
||||||
|
void inputMethod();
|
||||||
void inputMethodSelection();
|
void inputMethodSelection();
|
||||||
void inputMethodTentativeCommit();
|
void inputMethodTentativeCommit();
|
||||||
|
|
||||||
@ -3805,6 +3806,18 @@ void tst_QLineEdit::selectAndCursorPosition()
|
|||||||
QCOMPARE(testWidget->cursorPosition(), 0);
|
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()
|
void tst_QLineEdit::inputMethodSelection()
|
||||||
{
|
{
|
||||||
testWidget->setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
|
testWidget->setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
|
||||||
|
@ -2407,11 +2407,16 @@ void tst_QTextEdit::inputMethodQuery()
|
|||||||
ed->setText(text);
|
ed->setText(text);
|
||||||
ed->selectAll();
|
ed->selectAll();
|
||||||
|
|
||||||
QInputMethodQueryEvent event(Qt::ImQueryInput);
|
QInputMethodQueryEvent event(Qt::ImQueryInput | Qt::ImEnabled);
|
||||||
QGuiApplication::sendEvent(ed, &event);
|
QGuiApplication::sendEvent(ed, &event);
|
||||||
int anchor = event.value(Qt::ImAnchorPosition).toInt();
|
int anchor = event.value(Qt::ImAnchorPosition).toInt();
|
||||||
int position = event.value(Qt::ImCursorPosition).toInt();
|
int position = event.value(Qt::ImCursorPosition).toInt();
|
||||||
QCOMPARE(qAbs(position - anchor), text.length());
|
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)
|
QTEST_MAIN(tst_QTextEdit)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user