diff --git a/src/libs/utils/submiteditorwidget.cpp b/src/libs/utils/submiteditorwidget.cpp index db559a2c102dc67db0018d343aaccc6b20b32a4b..687813c197b68508cd4b6a070e75817c38e46e80 100644 --- a/src/libs/utils/submiteditorwidget.cpp +++ b/src/libs/utils/submiteditorwidget.cpp @@ -230,17 +230,34 @@ void SubmitEditorWidget::unregisterActions(QAction *editorUndoAction, QAction * } } -QString SubmitEditorWidget::trimmedDescriptionText() const +// Make sure we have one terminating NL +static inline QString trimMessageText(const QString &t) { - // Make sure we have one terminating NL - QString text = descriptionText().trimmed(); - text += QLatin1Char('\n'); - return text; + QString rc = t.trimmed(); + rc += QLatin1Char('\n'); + return rc; +} + +// Extract the wrapped text from a text edit, which performs +// the wrapping only optically. +static QString wrappedText(const QTextEdit *e) +{ + const QChar newLine = QLatin1Char('\n'); + QString rc; + QTextCursor cursor(e->document()); + cursor.movePosition(QTextCursor::Start); + while (!cursor.atEnd()) { + cursor.select(QTextCursor::LineUnderCursor); + rc += cursor.selectedText(); + rc += newLine; + cursor.movePosition(QTextCursor::Right); + } + return rc; } QString SubmitEditorWidget::descriptionText() const { - QString rc = m_d->m_ui.description->toPlainText(); + QString rc = trimMessageText(lineWrap() ? wrappedText(m_d->m_ui.description) : m_d->m_ui.description->toPlainText()); // append field entries foreach(const SubmitEditorWidgetPrivate::FieldEntry &fe, m_d->m_fieldEntries) { const QString fieldText = fe.second->text().trimmed(); diff --git a/src/libs/utils/submiteditorwidget.h b/src/libs/utils/submiteditorwidget.h index 98094adfcc7180ba6b4545d83dcc0c15b7ea76df..9ed5ecfb115d01d7a3f8b409a29749b11ca20c16 100644 --- a/src/libs/utils/submiteditorwidget.h +++ b/src/libs/utils/submiteditorwidget.h @@ -87,8 +87,6 @@ public: QString descriptionText() const; void setDescriptionText(const QString &text); - // Should be used to normalize newlines. - QString trimmedDescriptionText() const; int fileNameColumn() const; void setFileNameColumn(int c); diff --git a/src/plugins/perforce/perforcesubmiteditor.cpp b/src/plugins/perforce/perforcesubmiteditor.cpp index 98a9a511acbfc783787da57b77a9a0c207abefbf..dd3b53d4af328e07394181165b95cb256be9f7c8 100644 --- a/src/plugins/perforce/perforcesubmiteditor.cpp +++ b/src/plugins/perforce/perforcesubmiteditor.cpp @@ -152,7 +152,7 @@ void PerforceSubmitEditor::updateEntries() const QString newLine = QString(QLatin1Char('\n')); const QString tab = QString(QLatin1Char('\t')); - QStringList lines = submitEditorWidget()->trimmedDescriptionText().split(newLine); + QStringList lines = submitEditorWidget()->descriptionText().split(newLine); while (lines.last().isEmpty()) lines.removeLast(); // Description diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp index 555e7576a61f9538c0c0792ddfe8e7747a723782..e696f46b126e17ac92758783f677aeedf86b17d2 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp @@ -391,7 +391,7 @@ bool VCSBaseSubmitEditor::save(const QString &fileName) QString VCSBaseSubmitEditor::fileContents() const { - return m_d->m_widget->trimmedDescriptionText(); + return m_d->m_widget->descriptionText(); } bool VCSBaseSubmitEditor::setFileContents(const QString &contents)