diff options
Diffstat (limited to 'tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp')
-rw-r--r-- | tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index ebdb3b83c4..191ae2c5e1 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -194,6 +194,7 @@ private slots: void appFocusWidgetWithFocusProxyLater(); void appFocusWidgetWhenLosingFocusProxy(); void explicitTabOrderWithComplexWidget(); + void explicitTabOrderWithSpinBox_QTBUG81097(); #if defined(Q_OS_WIN) void activation(); #endif @@ -2331,6 +2332,37 @@ void tst_QWidget::explicitTabOrderWithComplexWidget() QTRY_COMPARE(QApplication::focusWidget(), lineEditOne); } +void tst_QWidget::explicitTabOrderWithSpinBox_QTBUG81097() +{ + // Check the special case of QAbstractSpinBox-like widgets, that have a + // child widget with a focusPolicy() set to its parent. + Container window; + auto spinBoxOne = new QDoubleSpinBox; + auto spinBoxTwo = new QDoubleSpinBox; + auto lineEdit = new QLineEdit; + window.box->addWidget(spinBoxOne); + window.box->addWidget(spinBoxTwo); + window.box->addWidget(lineEdit); + QWidget::setTabOrder(spinBoxOne, spinBoxTwo); + QWidget::setTabOrder(spinBoxTwo, lineEdit); + spinBoxOne->setFocus(); + window.show(); + QApplication::setActiveWindow(&window); + QVERIFY(QTest::qWaitForWindowActive(&window)); + QTRY_COMPARE(QApplication::focusWidget(), spinBoxOne); + + window.tab(); + QTRY_COMPARE(QApplication::focusWidget(), spinBoxTwo); + window.tab(); + QTRY_COMPARE(QApplication::focusWidget(), lineEdit); + window.backTab(); + QTRY_COMPARE(QApplication::focusWidget(), spinBoxTwo); + window.backTab(); + QTRY_COMPARE(QApplication::focusWidget(), spinBoxOne); + window.backTab(); + QTRY_COMPARE(QApplication::focusWidget(), lineEdit); +} + #if defined(Q_OS_WIN) void tst_QWidget::activation() { |