mirror of https://github.com/qt/qtbase.git
tst_qabstractitemview: add debug code for crash in testDialogAsEditor()
Now when the editor gets closed unexpectely we should get a proper backtrace to see why. Task-number: QTBUG-136653 Change-Id: I96fb8f2260cdb6e7e6a48ad15ac35598ad9266d5 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Liang Qi <liang.qi@qt.io>
This commit is contained in:
parent
516ffe8275
commit
58215a1821
|
@ -2301,6 +2301,16 @@ void tst_QAbstractItemView::testDialogAsEditor()
|
||||||
{
|
{
|
||||||
DialogItemDelegate delegate;
|
DialogItemDelegate delegate;
|
||||||
|
|
||||||
|
bool canBeDestroyed = true;
|
||||||
|
connect(&delegate, &QAbstractItemDelegate::closeEditor,
|
||||||
|
this, [&](QWidget *editor, QAbstractItemDelegate::EndEditHint) {
|
||||||
|
// if we get here but we are not yet in the state to
|
||||||
|
// get destroyed, abort to trigger backtrace so we see
|
||||||
|
// why we get here
|
||||||
|
if (!canBeDestroyed)
|
||||||
|
qFatal("Please report the following backtrace on QTBUG-136653");
|
||||||
|
});
|
||||||
|
|
||||||
QStandardItemModel model;
|
QStandardItemModel model;
|
||||||
model.appendRow(new QStandardItem(QStringLiteral("editme")));
|
model.appendRow(new QStandardItem(QStringLiteral("editme")));
|
||||||
|
|
||||||
|
@ -2319,8 +2329,10 @@ void tst_QAbstractItemView::testDialogAsEditor()
|
||||||
|
|
||||||
QCOMPARE(delegate.result, QDialog::Rejected);
|
QCOMPARE(delegate.result, QDialog::Rejected);
|
||||||
|
|
||||||
|
canBeDestroyed = false;
|
||||||
view.edit(model.index(0,0));
|
view.edit(model.index(0,0));
|
||||||
|
|
||||||
|
canBeDestroyed = true;
|
||||||
QVERIFY(QTest::qWaitForWindowExposed(delegate.openedEditor));
|
QVERIFY(QTest::qWaitForWindowExposed(delegate.openedEditor));
|
||||||
|
|
||||||
delegate.openedEditor->accept();
|
delegate.openedEditor->accept();
|
||||||
|
|
Loading…
Reference in New Issue