diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 647f16206d74c189c6304625ae748ee3cb4756c4..5388c5cce7fecfef05d89ea48312765b541ffbb1 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -1041,6 +1041,23 @@ void BaseTextEditor::moveLineUpDown(bool up) move.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); } QString text = move.selectedText(); + + RefactorMarkers affectedMarkers; + RefactorMarkers nonAffectedMarkers; + QList<int> markerOffsets; + + foreach (const RefactorMarker &marker, d->m_refactorOverlay->markers()) { + //test if marker is part of the selection to be moved + if ((move.selectionStart() <= marker.cursor.position()) && (move.selectionEnd() >= marker.cursor.position())) { + affectedMarkers.append(marker); + //remember the offset of markers in text + int offset = marker.cursor.position() - move.selectionStart(); + markerOffsets.append(offset); + } else { + nonAffectedMarkers.append(marker); + } + } + move.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor); move.removeSelectedText(); @@ -1069,6 +1086,13 @@ void BaseTextEditor::moveLineUpDown(bool up) move.setPosition(end, QTextCursor::KeepAnchor); } + //update positions of affectedMarkers + for (int i=0;i < affectedMarkers.count(); i++) { + int newPosition = start + markerOffsets.at(i); + affectedMarkers[i].cursor.setPosition(newPosition); + } + d->m_refactorOverlay->setMarkers(nonAffectedMarkers + affectedMarkers); + reindent(document(), move); move.endEditBlock();