summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/widgets')
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp64
-rw-r--r--tests/auto/widgets/widgets/qtextedit/qtextedit.pro2
-rw-r--r--tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp42
3 files changed, 65 insertions, 43 deletions
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
index a6860006c2..384c5c2861 100644
--- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
@@ -72,6 +72,10 @@
#include "qplatformdefs.h"
+#include "../../../shared/platforminputcontext.h"
+#include <private/qinputmethod_p.h>
+
+
QT_BEGIN_NAMESPACE
class QPainter;
QT_END_NAMESPACE
@@ -275,7 +279,6 @@ private slots:
void selectAndCursorPosition();
void inputMethod();
void inputMethodSelection();
- void inputMethodTentativeCommit();
protected slots:
void editingFinished();
@@ -301,6 +304,7 @@ private:
int newCursorPos;
QLineEdit *testWidget;
int m_keyboardScheme;
+ PlatformInputContext m_platformInputContext;
};
typedef QList<int> IntList;
@@ -357,21 +361,23 @@ void tst_QLineEdit::initTestCase()
testWidget->resize(200,50);
testWidget->show();
+ QTest::qWaitForWindowShown(testWidget);
QApplication::setActiveWindow(testWidget);
-#ifdef Q_WS_X11
- // to be safe and avoid failing setFocus with window managers
- qt_x11_wait_for_window_manager(testWidget);
-#endif
QTRY_VERIFY(testWidget->hasFocus());
changed_count = 0;
edited_count = 0;
selection_count = 0;
+
+ QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod());
+ inputMethodPrivate->testContext = &m_platformInputContext;
}
void tst_QLineEdit::cleanupTestCase()
{
delete testWidget;
+ QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod());
+ inputMethodPrivate->testContext = 0;
}
void tst_QLineEdit::init()
@@ -3828,6 +3834,23 @@ void tst_QLineEdit::inputMethod()
testWidget->setEnabled(false);
QApplication::sendEvent(testWidget, &queryEvent);
QCOMPARE(queryEvent.value(Qt::ImEnabled).toBool(), false);
+ testWidget->setEnabled(true);
+
+ // removing focus allows input method to commit preedit
+ testWidget->setText("");
+ testWidget->activateWindow();
+ QTRY_VERIFY(testWidget->hasFocus());
+ QTRY_COMPARE(qApp->focusObject(), testWidget);
+
+ m_platformInputContext.setCommitString("text");
+ m_platformInputContext.m_commitCallCount = 0;
+ QList<QInputMethodEvent::Attribute> attributes;
+ QInputMethodEvent preeditEvent("preedit text", attributes);
+ QApplication::sendEvent(testWidget, &preeditEvent);
+
+ testWidget->clearFocus();
+ QCOMPARE(m_platformInputContext.m_commitCallCount, 1);
+ QCOMPARE(testWidget->text(), QString("text"));
}
void tst_QLineEdit::inputMethodSelection()
@@ -3866,37 +3889,6 @@ void tst_QLineEdit::inputMethodSelection()
QCOMPARE(selectionSpy.count(), 3);
}
-void tst_QLineEdit::inputMethodTentativeCommit()
-{
- // test that basic tentative commit gets to text property on preedit state
- QList<QInputMethodEvent::Attribute> attributes;
- QInputMethodEvent event("test", attributes);
- event.setTentativeCommitString("test");
- QApplication::sendEvent(testWidget, &event);
- QCOMPARE(testWidget->text(), QString("test"));
-
- // tentative commit not allowed present in surrounding text
- QInputMethodQueryEvent queryEvent(Qt::ImSurroundingText);
- QApplication::sendEvent(testWidget, &queryEvent);
- QCOMPARE(queryEvent.value(Qt::ImSurroundingText).toString(), QString(""));
-
- // if text with tentative commit does not validate, not allowed to be part of text property
- testWidget->setText(""); // ensure input state is reset
- QValidator *validator = new QIntValidator(0, 100);
- testWidget->setValidator(validator);
- QApplication::sendEvent(testWidget, &event);
- QCOMPARE(testWidget->text(), QString(""));
- testWidget->setValidator(0);
- delete validator;
-
- // text remains when focus is removed
- testWidget->setText(""); // ensure input state is reset
- QApplication::sendEvent(testWidget, &event);
- QFocusEvent lostFocus(QEvent::FocusOut);
- QApplication::sendEvent(testWidget, &lostFocus);
- QCOMPARE(testWidget->text(), QString("test"));
-}
-
QTEST_MAIN(tst_QLineEdit)
#include "tst_qlineedit.moc"
diff --git a/tests/auto/widgets/widgets/qtextedit/qtextedit.pro b/tests/auto/widgets/widgets/qtextedit/qtextedit.pro
index 85658c222e..1c2821b289 100644
--- a/tests/auto/widgets/widgets/qtextedit/qtextedit.pro
+++ b/tests/auto/widgets/widgets/qtextedit/qtextedit.pro
@@ -1,7 +1,7 @@
CONFIG += testcase
TARGET = tst_qtextedit
-QT += widgets widgets-private gui-private testlib
+QT += widgets widgets-private gui-private core-private testlib
INCLUDEPATH += ../
HEADERS +=
diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
index 249e9d7fbe..9c5a3dbed7 100644
--- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
+++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
@@ -62,6 +62,10 @@
#include <qabstracttextdocumentlayout.h>
#include <qtextdocumentfragment.h>
+#include "../../../shared/platforminputcontext.h"
+#include <private/qinputmethod_p.h>
+
+
//Used in copyAvailable
typedef QPair<Qt::Key, Qt::KeyboardModifier> keyPairType;
typedef QList<keyPairType> pairListType;
@@ -96,6 +100,8 @@ public:
tst_QTextEdit();
public slots:
+ void initTestCase();
+ void cleanupTestCase();
void init();
void cleanup();
private slots:
@@ -211,6 +217,7 @@ private:
QTextEdit *ed;
qreal rootFrameMargin;
+ PlatformInputContext m_platformInputContext;
};
bool tst_QTextEdit::nativeClipboardWorking()
@@ -372,6 +379,18 @@ public:
tst_QTextEdit::tst_QTextEdit()
{}
+void tst_QTextEdit::initTestCase()
+{
+ QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod());
+ inputMethodPrivate->testContext = &m_platformInputContext;
+}
+
+void tst_QTextEdit::cleanupTestCase()
+{
+ QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod());
+ inputMethodPrivate->testContext = 0;
+}
+
void tst_QTextEdit::init()
{
#ifdef Q_OS_WINCE //disable magic for WindowsCE
@@ -2360,6 +2379,8 @@ void tst_QTextEdit::bidiLogicalMovement()
void tst_QTextEdit::inputMethodEvent()
{
+ ed->show();
+
// test that text change with an input method event triggers change signal
QSignalSpy spy(ed, SIGNAL(textChanged()));
@@ -2367,14 +2388,23 @@ void tst_QTextEdit::inputMethodEvent()
event.setCommitString("text");
QApplication::sendEvent(ed, &event);
QCOMPARE(spy.count(), 1);
- spy.clear();
+ QCOMPARE(ed->toPlainText(), QString("text"));
+ // test that input method gets chance to commit preedit when removing focus
+ ed->setText("");
+ QApplication::setActiveWindow(ed);
+ QTRY_VERIFY(QApplication::focusWindow());
+ QCOMPARE(qApp->focusObject(), ed);
+
+ m_platformInputContext.setCommitString("text");
+ m_platformInputContext.m_commitCallCount = 0;
QList<QInputMethodEvent::Attribute> attributes;
- QInputMethodEvent event2("preedit", attributes);
- event2.setTentativeCommitString("string");
- QApplication::sendEvent(ed, &event2);
- QCOMPARE(spy.count(), 1);
- QCOMPARE(ed->toPlainText(), QString("textstring"));
+ QInputMethodEvent preeditEvent("preedit text", attributes);
+ QApplication::sendEvent(ed, &preeditEvent);
+
+ ed->clearFocus();
+ QCOMPARE(m_platformInputContext.m_commitCallCount, 1);
+ QCOMPARE(ed->toPlainText(), QString("text"));
}
void tst_QTextEdit::inputMethodSelection()