diff options
-rw-r--r-- | client/test/testlineedit.cc | 37 | ||||
-rw-r--r-- | client/widgets/lineedit.cc | 2 |
2 files changed, 38 insertions, 1 deletions
diff --git a/client/test/testlineedit.cc b/client/test/testlineedit.cc index 577e0da..e8c9e40 100644 --- a/client/test/testlineedit.cc +++ b/client/test/testlineedit.cc @@ -2,6 +2,9 @@ #include <QtTest/QtTest> #include "util.h" #include "lineedit.h" +#include <QApplication> +#include <QWidget> +#include <QLineEdit> static QString xml = "<lineedit name=\"mylineedit\"/>\n"; @@ -40,6 +43,40 @@ private slots: QTest::keyClicks(le.qwidget(), "h"); QCOMPARE(spy.count(), 1); } + + void tabOut() + { + QDomDocument doc; doc.setContent(xml); + QDomElement e = doc.documentElement(); + QWidget main; + LineEdit le(e, createMacroWindow()); + le.qwidget()->setParent(&main); + QLineEdit qle(&main); + main.show(); + + QApplication::processEvents(); + + QTest::mouseClick(le.qwidget(), Qt::LeftButton); + QApplication::processEvents(); + QCOMPARE(QApplication::focusWidget(), le.qwidget()); + QTest::keyClick(le.qwidget(), Qt::Key_Enter); + QApplication::processEvents(); + QVERIFY(QApplication::focusWidget() != le.qwidget()); + + QTest::mouseClick(le.qwidget(), Qt::LeftButton); + QApplication::processEvents(); + QCOMPARE(QApplication::focusWidget(), le.qwidget()); + QTest::keyClick(le.qwidget(), Qt::Key_Return); + QApplication::processEvents(); + QVERIFY(QApplication::focusWidget() != le.qwidget()); + + QTest::mouseClick(le.qwidget(), Qt::LeftButton); + QApplication::processEvents(); + QCOMPARE(QApplication::focusWidget(), le.qwidget()); + QTest::keyClick(le.qwidget(), Qt::Key_Tab); + QApplication::processEvents(); + QVERIFY(QApplication::focusWidget() != le.qwidget()); + } }; QTEST_MAIN(TestLineEdit) diff --git a/client/widgets/lineedit.cc b/client/widgets/lineedit.cc index 9fb5f09..a8ea600 100644 --- a/client/widgets/lineedit.cc +++ b/client/widgets/lineedit.cc @@ -103,7 +103,7 @@ bool LineEdit::eventFilter(QObject *, QEvent *event) if(keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter) { QKeyEvent tabevent(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier); - QCoreApplication::sendEvent(this, &tabevent); + QCoreApplication::sendEvent(lineedit, &tabevent); } } return false; |