aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorCaroline Chao <caroline.chao@digia.com>2013-03-05 14:56:10 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-03-07 11:58:50 +0100
commitc4cbb1249fa7cb754de4603f5ff606aa94fafbd5 (patch)
tree8011bbe11d396ea71211e59133413280d1d3cf66 /tests
parent962609bef1aaa61125700ceb5e5e25c243113a0a (diff)
Tests: add autotests for TextEdit and TextInput
Check the selection is not cleared when the control receives a focus out event with one of the following reason: - Qt::ActiveWindowFocusReason - Qt::PopupFocusReason Change-Id: I38f4a4cba5e769f19de4e327d03be57a8d1d36a7 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/qquicktextedit/data/focusOutSelection.qml35
-rw-r--r--tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp43
-rw-r--r--tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp44
3 files changed, 122 insertions, 0 deletions
diff --git a/tests/auto/quick/qquicktextedit/data/focusOutSelection.qml b/tests/auto/quick/qquicktextedit/data/focusOutSelection.qml
new file mode 100644
index 0000000000..91a6ac900d
--- /dev/null
+++ b/tests/auto/quick/qquicktextedit/data/focusOutSelection.qml
@@ -0,0 +1,35 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: focusoutwindow
+
+ width: 100
+ height: 150
+
+ property alias text1: text1
+ property alias text2: text2
+
+ TextEdit {
+ x: 20
+ y: 30
+ id: text1
+ text: "text 1"
+ height: 20
+ width: 50
+ selectByMouse: true
+ activeFocusOnPress: true
+ objectName: "text1"
+ }
+
+ TextEdit {
+ x: 20
+ y: 80
+ id: text2
+ text: "text 2"
+ height: 20
+ width: 50
+ selectByMouse: true
+ activeFocusOnPress: true
+ objectName: "text2"
+ }
+}
diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
index c29c6c05d6..e4821e80a6 100644
--- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
+++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
@@ -117,6 +117,7 @@ private slots:
void color();
void textMargin();
void persistentSelection();
+ void selectionOnFocusOut();
void focusOnPress();
void selection();
void isRightToLeft_data();
@@ -1163,6 +1164,48 @@ void tst_qquicktextedit::persistentSelection()
}
+void tst_qquicktextedit::selectionOnFocusOut()
+{
+ QQuickView window(testFileUrl("focusOutSelection.qml"));
+ window.show();
+ window.requestActivate();
+ QTest::qWaitForWindowActive(&window);
+
+ QPoint p1(25, 35);
+ QPoint p2(25, 85);
+
+ QQuickTextEdit *edit1 = window.rootObject()->findChild<QQuickTextEdit*>("text1");
+ QQuickTextEdit *edit2 = window.rootObject()->findChild<QQuickTextEdit*>("text2");
+
+ QTest::mouseClick(&window, Qt::LeftButton, 0, p1);
+ QVERIFY(edit1->hasActiveFocus());
+ QVERIFY(!edit2->hasActiveFocus());
+
+ edit1->selectAll();
+ QCOMPARE(edit1->selectedText(), QLatin1String("text 1"));
+
+ QTest::mouseClick(&window, Qt::LeftButton, 0, p2);
+
+ QCOMPARE(edit1->selectedText(), QLatin1String(""));
+ QVERIFY(!edit1->hasActiveFocus());
+ QVERIFY(edit2->hasActiveFocus());
+
+ edit2->selectAll();
+ QCOMPARE(edit2->selectedText(), QLatin1String("text 2"));
+
+
+ edit2->setFocus(false, Qt::ActiveWindowFocusReason);
+ QVERIFY(!edit2->hasActiveFocus());
+ QCOMPARE(edit2->selectedText(), QLatin1String("text 2"));
+
+ edit2->setFocus(true);
+ QVERIFY(edit2->hasActiveFocus());
+
+ edit2->setFocus(false, Qt::PopupFocusReason);
+ QVERIFY(!edit2->hasActiveFocus());
+ QCOMPARE(edit2->selectedText(), QLatin1String("text 2"));
+}
+
void tst_qquicktextedit::focusOnPress()
{
QString componentStr =
diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
index 02475eb431..61cac47370 100644
--- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
+++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
@@ -167,6 +167,7 @@ private slots:
void openInputPanel();
void setHAlignClearCache();
void focusOutClearSelection();
+ void focusOutNotClearSelection();
void echoMode();
void passwordEchoDelay();
@@ -3497,6 +3498,49 @@ void tst_qquicktextinput::focusOutClearSelection()
QTRY_COMPARE(input.selectedText(), QLatin1String(""));
}
+void tst_qquicktextinput::focusOutNotClearSelection()
+{
+ QQuickView view;
+ QQuickTextInput input;
+ input.setText(QLatin1String("Hello world"));
+ input.setFocus(true);
+ input.setParentItem(view.contentItem());
+ input.componentComplete();
+ view.show();
+ view.requestActivate();
+ QTest::qWaitForWindowActive(&view);
+
+ QVERIFY(input.hasActiveFocus());
+ input.select(2,5);
+ QTRY_COMPARE(input.selectedText(), QLatin1String("llo"));
+
+ // The selection should not be cleared when the focus
+ // out event has one of the following reason:
+ // Qt::ActiveWindowFocusReason
+ // Qt::PopupFocusReason
+
+ input.setFocus(false, Qt::ActiveWindowFocusReason);
+ QGuiApplication::processEvents();
+ QTRY_COMPARE(input.selectedText(), QLatin1String("llo"));
+ QTRY_COMPARE(input.hasActiveFocus(), false);
+
+ input.setFocus(true);
+ QTRY_COMPARE(input.hasActiveFocus(), true);
+
+ input.setFocus(false, Qt::PopupFocusReason);
+ QGuiApplication::processEvents();
+ QTRY_COMPARE(input.selectedText(), QLatin1String("llo"));
+ QTRY_COMPARE(input.hasActiveFocus(), false);
+
+ input.setFocus(true);
+ QTRY_COMPARE(input.hasActiveFocus(), true);
+
+ input.setFocus(false, Qt::OtherFocusReason);
+ QGuiApplication::processEvents();
+ QTRY_COMPARE(input.selectedText(), QLatin1String(""));
+ QTRY_COMPARE(input.hasActiveFocus(), false);
+}
+
void tst_qquicktextinput::geometrySignals()
{
QQmlComponent component(&engine, testFileUrl("geometrySignals.qml"));