test: Don't crash when focusWidget() is null
If QApplication::focusWidget() returns null, which was the case on Wayland under some circumstances, then the code collecting the error output would crash when dereferencing the null pointer. This fixes that crash and gets proper test failure output instead. Pick-to: 6.5 Fixes: QTBUG-124475 Change-Id: Ic34228be953cf42dfe2ebf75957cd48791e6de7d Reviewed-by: Liang Qi <liang.qi@qt.io> (cherry picked from commit 5711aaa0170bd97dab1479c0e6c884289e41da99) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
8302c727e6
commit
5310cce3ce
@ -2330,6 +2330,13 @@ void tst_QWidget::tabOrderWithProxy()
|
||||
QVERIFY(firstEdit->hasFocus());
|
||||
}
|
||||
|
||||
static QString focusWidgetName()
|
||||
{
|
||||
return QApplication::focusWidget() != nullptr
|
||||
? QApplication::focusWidget()->objectName()
|
||||
: QStringLiteral("No focus widget");
|
||||
}
|
||||
|
||||
void tst_QWidget::tabOrderWithProxyDisabled()
|
||||
{
|
||||
Container container;
|
||||
@ -2362,23 +2369,23 @@ void tst_QWidget::tabOrderWithProxyDisabled()
|
||||
QSKIP("Window failed to activate, skipping test");
|
||||
|
||||
QVERIFY2(lineEdit1.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
container.tab();
|
||||
QVERIFY2(!lineEdit2.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
QVERIFY2(lineEdit3.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
container.tab();
|
||||
QVERIFY2(lineEdit1.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
container.backTab();
|
||||
QVERIFY2(lineEdit3.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
container.backTab();
|
||||
QVERIFY2(!lineEdit2.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
QVERIFY2(lineEdit1.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
}
|
||||
|
||||
//#define DEBUG_FOCUS_CHAIN
|
||||
@ -2692,23 +2699,23 @@ void tst_QWidget::tabOrderWithCompoundWidgetsNoFocusPolicy()
|
||||
QSKIP("Window failed to activate, skipping test");
|
||||
|
||||
QVERIFY2(spinbox1.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
container.tab();
|
||||
QVERIFY2(!spinbox2.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
QVERIFY2(spinbox3.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
container.tab();
|
||||
QVERIFY2(spinbox1.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
container.backTab();
|
||||
QVERIFY2(spinbox3.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
container.backTab();
|
||||
QVERIFY2(!spinbox2.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
QVERIFY2(spinbox1.hasFocus(),
|
||||
qPrintable(QApplication::focusWidget()->objectName()));
|
||||
qPrintable(focusWidgetName()));
|
||||
}
|
||||
|
||||
void tst_QWidget::tabOrderNoChange()
|
||||
|
Loading…
x
Reference in New Issue
Block a user