diff --git a/src/widgets/availablepagesview.cpp b/src/widgets/availablepagesview.cpp --- a/src/widgets/availablepagesview.cpp +++ b/src/widgets/availablepagesview.cpp @@ -177,6 +177,11 @@ m_model = model; + setEnabled(m_model); + + if (!m_model) + return; + m_addProjectAction->setVisible(m_model->property("hasProjectPages").toBool()); m_addContextAction->setVisible(m_model->property("hasContextPages").toBool()); m_addTagAction->setVisible(m_model->property("hasTagPages").toBool()); diff --git a/tests/units/widgets/availablepagesviewtest.cpp b/tests/units/widgets/availablepagesviewtest.cpp --- a/tests/units/widgets/availablepagesviewtest.cpp +++ b/tests/units/widgets/availablepagesviewtest.cpp @@ -280,6 +280,31 @@ QCOMPARE(pagesView->selectionModel()->currentIndex(), model.index(0, 0)); } + void shouldNotCrashWithNullModel() + { + // GIVEN + QStringListModel model(QStringList() << "A" << "B" << "C" ); + + AvailablePagesModelStub stubPagesModel; + stubPagesModel.setProperty("pageListModel", QVariant::fromValue(static_cast(&model))); + + Widgets::AvailablePagesView available; + available.setModel(&stubPagesModel); + QTest::qWait(10); + + auto pagesView = available.findChild("pagesView"); + QVERIFY(pagesView); + QCOMPARE(pagesView->model(), &model); + + // WHEN + available.setModel(Q_NULLPTR); + QTest::qWait(10); + + // THEN + QVERIFY(!available.isEnabled()); + QVERIFY(!pagesView->model()); + } + void shouldAddNewProjects() { // GIVEN