diff --git a/src/widgets/editorview.cpp b/src/widgets/editorview.cpp --- a/src/widgets/editorview.cpp +++ b/src/widgets/editorview.cpp @@ -126,6 +126,14 @@ m_model = model; + setEnabled(m_model); + + if (!m_model) { + m_taskGroup->setVisible(false); + m_textEdit->clear(); + return; + } + onArtifactChanged(); onTextOrTitleChanged(); onHasTaskPropertiesChanged(); diff --git a/tests/units/widgets/editorviewtest.cpp b/tests/units/widgets/editorviewtest.cpp --- a/tests/units/widgets/editorviewtest.cpp +++ b/tests/units/widgets/editorviewtest.cpp @@ -140,6 +140,47 @@ QVERIFY(!delegateEdit->isVisibleTo(&editor)); } + void shouldNotCrashForNullModel() + { + // GIVEN + Widgets::EditorView editor; + EditorModelStub model; + model.setTitle("Foo"); + model.setText("Bar"); + model.setPropertyAndSignal("hasTaskProperties", true); + editor.setModel(&model); + + auto textEdit = editor.findChild("textEdit"); + QVERIFY(textEdit); + + auto startDateEdit = editor.findChild("startDateEdit"); + QVERIFY(startDateEdit); + + auto dueDateEdit = editor.findChild("dueDateEdit"); + QVERIFY(dueDateEdit); + + auto doneButton = editor.findChild("doneButton"); + QVERIFY(doneButton); + + auto delegateLabel = editor.findChild("delegateLabel"); + QVERIFY(delegateLabel); + + auto delegateEdit = editor.findChild("delegateEdit"); + QVERIFY(delegateEdit); + + // WHEN + editor.setModel(Q_NULLPTR); + + // THEN + QVERIFY(!editor.isEnabled()); + QVERIFY(textEdit->toPlainText().isEmpty()); + QVERIFY(!startDateEdit->isVisibleTo(&editor)); + QVERIFY(!dueDateEdit->isVisibleTo(&editor)); + QVERIFY(!doneButton->isVisibleTo(&editor)); + QVERIFY(!delegateLabel->isVisibleTo(&editor)); + QVERIFY(!delegateEdit->isVisibleTo(&editor)); + } + void shouldShowTaskPropertiesEditorsOnlyForTasks() { // GIVEN