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; | 
