diff options
Diffstat (limited to 'tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp')
-rw-r--r-- | tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index c029e58acc..5aefc0f7f6 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -186,6 +186,7 @@ private slots: void reverseTabOrder(); void tabOrderWithProxy(); void tabOrderWithCompoundWidgets(); + void tabOrderWithCompoundWidgetsNoFocusPolicy(); void tabOrderNoChange(); void tabOrderNoChange2(); void appFocusWidgetWithFocusProxyLater(); @@ -2124,6 +2125,51 @@ static void dumpFocusChain(QWidget *start, bool bForward, const char *desc = nul #endif } +void tst_QWidget::tabOrderWithCompoundWidgetsNoFocusPolicy() +{ + Container container; + container.setWindowTitle(QLatin1String(QTest::currentTestFunction())); + QSpinBox spinbox1; + spinbox1.setObjectName("spinbox1"); + QSpinBox spinbox2; + spinbox2.setObjectName("spinbox2"); + QSpinBox spinbox3; + spinbox3.setObjectName("spinbox3"); + + spinbox1.setFocusPolicy(Qt::StrongFocus); + spinbox2.setFocusPolicy(Qt::NoFocus); + spinbox3.setFocusPolicy(Qt::StrongFocus); + container.box->addWidget(&spinbox1); + container.box->addWidget(&spinbox2); + container.box->addWidget(&spinbox3); + + container.show(); + container.activateWindow(); + + QApplication::setActiveWindow(&container); + if (!QTest::qWaitForWindowActive(&container)) + QSKIP("Window failed to activate, skipping test"); + + QVERIFY2(spinbox1.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + container.tab(); + QVERIFY2(!spinbox2.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + QVERIFY2(spinbox3.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + container.tab(); + QVERIFY2(spinbox1.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + container.backTab(); + QVERIFY2(spinbox3.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + container.backTab(); + QVERIFY2(!spinbox2.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); + QVERIFY2(spinbox1.hasFocus(), + qPrintable(QApplication::focusWidget()->objectName())); +} + void tst_QWidget::tabOrderNoChange() { QWidget w; |