diff options
author | Benjamin Poulain <benjamin.poulain@nokia.com> | 2009-06-30 20:50:48 (GMT) |
---|---|---|
committer | Benjamin Poulain <benjamin.poulain@nokia.com> | 2009-06-30 20:50:48 (GMT) |
commit | 436a71e8950ea5a050f95b5889b85e5fafb2e716 (patch) | |
tree | a54c8a03bd98015ae26adc59ae36bd64213b6fc3 | |
parent | 7e91986c352677d4c0456d30e1cb5fc3179e28c3 (diff) | |
download | Qt-436a71e8950ea5a050f95b5889b85e5fafb2e716.zip Qt-436a71e8950ea5a050f95b5889b85e5fafb2e716.tar.gz Qt-436a71e8950ea5a050f95b5889b85e5fafb2e716.tar.bz2 |
Set the focus to a child widget when set on a QGroupBox
When the focus is set on a QGroupBox with the policy NoFocus, the focus
should be propagated to one of the child if it accepts the focus. This
was failing because QWidget::focusWidget() returns the QGroupBox itself.
Task-number: 257158
Reviewed-by: Denis
-rw-r--r-- | src/gui/widgets/qgroupbox.cpp | 5 | ||||
-rw-r--r-- | tests/auto/qgroupbox/tst_qgroupbox.cpp | 11 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/gui/widgets/qgroupbox.cpp b/src/gui/widgets/qgroupbox.cpp index 0bfa8c0..2380e78 100644 --- a/src/gui/widgets/qgroupbox.cpp +++ b/src/gui/widgets/qgroupbox.cpp @@ -431,7 +431,7 @@ void QGroupBoxPrivate::_q_fixFocus(Qt::FocusReason reason) { Q_Q(QGroupBox); QWidget *fw = q->focusWidget(); - if (!fw) { + if (!fw || fw == q) { QWidget * best = 0; QWidget * candidate = 0; QWidget * w = q; @@ -449,8 +449,7 @@ void QGroupBoxPrivate::_q_fixFocus(Qt::FocusReason reason) } if (best) fw = best; - else - if (candidate) + else if (candidate) fw = candidate; } if (fw) diff --git a/tests/auto/qgroupbox/tst_qgroupbox.cpp b/tests/auto/qgroupbox/tst_qgroupbox.cpp index 2fa553f..3b94851 100644 --- a/tests/auto/qgroupbox/tst_qgroupbox.cpp +++ b/tests/auto/qgroupbox/tst_qgroupbox.cpp @@ -80,6 +80,7 @@ private slots: void clicked(); void toggledVsClicked(); void childrenAreDisabled(); + void propagateFocus(); private: bool checked; @@ -459,5 +460,15 @@ void tst_QGroupBox::childrenAreDisabled() } } +void tst_QGroupBox::propagateFocus() +{ + QGroupBox box; + QLineEdit lineEdit(&box); + box.show(); + box.setFocus(); + QTest::qWait(250); + QCOMPARE(qApp->focusWidget(), &lineEdit); +} + QTEST_MAIN(tst_QGroupBox) #include "tst_qgroupbox.moc" |