diff --git a/src/widgets/availablesourcesview.cpp b/src/widgets/availablesourcesview.cpp --- a/src/widgets/availablesourcesview.cpp +++ b/src/widgets/availablesourcesview.cpp @@ -135,6 +135,11 @@ m_model = model; + setEnabled(m_model); + + if (!m_model) + return; + setSourceModel("sourceListModel"); } diff --git a/tests/units/widgets/availablesourcesviewtest.cpp b/tests/units/widgets/availablesourcesviewtest.cpp --- a/tests/units/widgets/availablesourcesviewtest.cpp +++ b/tests/units/widgets/availablesourcesviewtest.cpp @@ -172,6 +172,33 @@ QCOMPARE(proxy->sourceModel(), &model); } + void shouldNotCrashWithNullModel() + { + // GIVEN + QStringListModel model(QStringList() << "A" << "B" << "C" ); + + QObject stubPagesModel; + stubPagesModel.setProperty("sourceListModel", QVariant::fromValue(static_cast(&model))); + + Widgets::AvailableSourcesView available; + auto sourcesView = available.findChild("sourcesView"); + QVERIFY(sourcesView); + auto proxy = qobject_cast(sourcesView->model()); + QVERIFY(proxy); + QVERIFY(!proxy->sourceModel()); + + available.setModel(&stubPagesModel); + QTest::qWait(10); + + // WHEN + available.setModel(Q_NULLPTR); + QTest::qWait(10); + + // THEN + QVERIFY(!available.isEnabled()); + QVERIFY(!proxy->sourceModel()); + } + void shouldSetSelectedAsDefault() { // GIVEN