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 6.7 Fixes: QTBUG-124475 Change-Id: Ic34228be953cf42dfe2ebf75957cd48791e6de7d Reviewed-by: Liang Qi <liang.qi@qt.io>bb10
parent
51420d910b
commit
5711aaa017
|
|
@ -2418,6 +2418,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;
|
||||
|
|
@ -2449,23 +2456,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
|
||||
|
|
@ -2777,23 +2784,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…
Reference in New Issue