summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/widgets/qgroupbox.cpp5
-rw-r--r--tests/auto/qgroupbox/tst_qgroupbox.cpp11
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"