diff --git a/dolphin/plugins/git/gitcommitdialog.cpp b/dolphin/plugins/git/gitcommitdialog.cpp index 0e15efa7..b34729b8 100644 --- a/dolphin/plugins/git/gitcommitdialog.cpp +++ b/dolphin/plugins/git/gitcommitdialog.cpp @@ -87,12 +87,15 @@ void GitCommitDialog::setupWidgets(const QStringList &changedfiles, const QStrin { m_changedfiles->setText(changedfiles.join(QLatin1String("\n"))); if (m_diffdocument) { - // NOTE: can't set the text in read-only mode - m_diffdocument->setReadWrite(true); - m_diffdocument->setText(diff); - // NOTE: after KTextEditor::Document::setText() the cursor is at the end - m_diffdocument->activeView()->setCursorPosition(KTextEditor::Cursor::start()); - m_diffdocument->setReadWrite(false); + // by not re-setting the text the cursor position and selection is preserved + if (m_diffdocument->text() != diff) { + // NOTE: can't set the text in read-only mode + m_diffdocument->setReadWrite(true); + m_diffdocument->setText(diff); + // NOTE: after KTextEditor::Document::setText() the cursor is at the end + m_diffdocument->activeView()->setCursorPosition(KTextEditor::Cursor::start()); + m_diffdocument->setReadWrite(false); + } } else { m_difffiles->setText(diff); }