diff --git a/src/widgets/editorview.cpp b/src/widgets/editorview.cpp --- a/src/widgets/editorview.cpp +++ b/src/widgets/editorview.cpp @@ -166,12 +166,12 @@ void EditorView::onTextOrTitleChanged() { - const QString text = m_model->property("title").toString() - + "\n" - + m_model->property("text").toString(); + const auto title = m_model->property("title").toString(); + const auto text = m_model->property("text").toString(); - if (text != m_textEdit->toPlainText()) - m_textEdit->setPlainText(text); + QRegExp reg("^" + title + "\\s*\\n?" + text + "\\s*$"); + if (!reg.exactMatch(m_textEdit->toPlainText())) + m_textEdit->setPlainText(title + '\n' + text); } void EditorView::onStartDateChanged() 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 @@ -312,6 +312,30 @@ + model.property("text").toString())); } + void shouldNotReactToTitleTrim() + { + // GIVEN + Widgets::EditorView editor; + EditorModelStub model; + model.makeTaskAvailable(); + model.setProperty("title", "My title "); + model.setProperty("text", "\nMy text"); + model.setProperty("startDate", QDateTime::currentDateTime()); + model.setProperty("dueDate", QDateTime::currentDateTime().addDays(2)); + model.setProperty("done", true); + editor.setModel(&model); + + auto textEdit = editor.findChild("textEdit"); + + // WHEN + model.setPropertyAndSignal("title", "My title"); + + // THEN + QCOMPARE(textEdit->toPlainText(), QString(model.property("title").toString() + " " + + "\n" + + model.property("text").toString())); + } + void shouldReactToTextChanges() { // GIVEN @@ -336,6 +360,30 @@ + model.property("text").toString())); } + void shouldNotReactToTextTrim() + { + // GIVEN + Widgets::EditorView editor; + EditorModelStub model; + model.makeTaskAvailable(); + model.setProperty("title", "My title"); + model.setProperty("text", "\nMy text \n "); + model.setProperty("startDate", QDateTime::currentDateTime()); + model.setProperty("dueDate", QDateTime::currentDateTime().addDays(2)); + model.setProperty("done", true); + editor.setModel(&model); + + auto textEdit = editor.findChild("textEdit"); + + // WHEN + model.setPropertyAndSignal("text", "\nMy text"); + + // THEN + QCOMPARE(textEdit->toPlainText(), QString(model.property("title").toString() + + "\n" + + model.property("text").toString() + " \n ")); + } + void shouldApplyTextEditChanges() { // GIVEN