DiffEditor: Simplify DiffSelection

Change-Id: I9de3774fafa9f257974a4231a83b64f375291d87
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Jarek Kobus
2022-09-27 17:55:54 +02:00
parent 3877ced865
commit f66320c413
4 changed files with 26 additions and 31 deletions

View File

@@ -47,9 +47,9 @@ static QList<DiffSelection> subtractSelection(
QList<DiffSelection> diffList;
if (makeMinuendSubtrahendStart)
diffList << DiffSelection(minuendSelection.start, subtrahendSelection.start, minuendSelection.format);
diffList += {minuendSelection.format, minuendSelection.start, subtrahendSelection.start};
if (makeSubtrahendMinuendEnd)
diffList << DiffSelection(subtrahendSelection.end, minuendSelection.end, minuendSelection.format);
diffList += {minuendSelection.format, subtrahendSelection.end, minuendSelection.end};
return diffList;
}

View File

@@ -11,14 +11,9 @@ namespace Internal {
class DiffSelection
{
public:
DiffSelection() = default;
// TODO: remove this constructors and make format the first field of this class
DiffSelection(QTextCharFormat *f) : format(f) {}
DiffSelection(int s, int e, QTextCharFormat *f) : start(s), end(e), format(f) {}
QTextCharFormat *format = nullptr;
int start = -1;
int end = -1;
QTextCharFormat *format = nullptr;
};
// block number, list of ranges

View File

@@ -274,8 +274,8 @@ SideBySideDiffOutput SideDiffData::diffOutput(QFutureInterface<void> &fi, int pr
QString leftText, rightText;
foldingIndent.insert(blockNumber, 1);
leftFormats[blockNumber].append(DiffSelection(input.m_fileLineFormat));
rightFormats[blockNumber].append(DiffSelection(input.m_fileLineFormat));
leftFormats[blockNumber].append({input.m_fileLineFormat});
rightFormats[blockNumber].append({input.m_fileLineFormat});
leftData.setFileInfo(blockNumber, contextFileData.fileInfo[LeftSide]);
rightData.setFileInfo(blockNumber, contextFileData.fileInfo[RightSide]);
leftText = separator;
@@ -286,8 +286,8 @@ SideBySideDiffOutput SideDiffData::diffOutput(QFutureInterface<void> &fi, int pr
if (contextFileData.binaryFiles) {
foldingIndent.insert(blockNumber, 2);
leftFormats[blockNumber].append(DiffSelection(input.m_chunkLineFormat));
rightFormats[blockNumber].append(DiffSelection(input.m_chunkLineFormat));
leftFormats[blockNumber].append({input.m_chunkLineFormat});
rightFormats[blockNumber].append({input.m_chunkLineFormat});
leftData.setSkippedLines(blockNumber, -2);
rightData.setSkippedLines(blockNumber, -2);
leftText += separator;
@@ -304,8 +304,8 @@ SideBySideDiffOutput SideDiffData::diffOutput(QFutureInterface<void> &fi, int pr
const int skippedLines = leftLineNumber - lastLeftLineNumber - 1;
if (skippedLines > 0) {
foldingIndent.insert(blockNumber, 2);
leftFormats[blockNumber].append(DiffSelection(input.m_chunkLineFormat));
rightFormats[blockNumber].append(DiffSelection(input.m_chunkLineFormat));
leftFormats[blockNumber].append({input.m_chunkLineFormat});
rightFormats[blockNumber].append({input.m_chunkLineFormat});
leftData.setSkippedLines(blockNumber, skippedLines, chunkData.contextInfo);
rightData.setSkippedLines(blockNumber, skippedLines, chunkData.contextInfo);
leftText += separator;
@@ -338,25 +338,25 @@ SideBySideDiffOutput SideDiffData::diffOutput(QFutureInterface<void> &fi, int pr
if (!rowData.equal) {
if (rowData.line[LeftSide].textLineType == TextLineData::TextLine)
leftFormats[blockNumber].append(DiffSelection(input.m_leftLineFormat));
leftFormats[blockNumber].append({input.m_leftLineFormat});
else
leftFormats[blockNumber].append(DiffSelection(input.m_spanLineFormat));
leftFormats[blockNumber].append({input.m_spanLineFormat});
if (rowData.line[RightSide].textLineType == TextLineData::TextLine)
rightFormats[blockNumber].append(DiffSelection(input.m_rightLineFormat));
rightFormats[blockNumber].append({input.m_rightLineFormat});
else
rightFormats[blockNumber].append(DiffSelection(input.m_spanLineFormat));
rightFormats[blockNumber].append({input.m_spanLineFormat});
}
for (auto it = leftLineData.changedPositions.cbegin(),
end = leftLineData.changedPositions.cend(); it != end; ++it) {
leftFormats[blockNumber].append(
{it.key(), it.value(), input.m_leftCharFormat});
{input.m_leftCharFormat, it.key(), it.value()});
}
for (auto it = rightLineData.changedPositions.cbegin(),
end = rightLineData.changedPositions.cend(); it != end; ++it) {
rightFormats[blockNumber].append(
{it.key(), it.value(), input.m_rightCharFormat});
{input.m_rightCharFormat, it.key(), it.value()});
}
leftText += separator;
@@ -378,8 +378,8 @@ SideBySideDiffOutput SideDiffData::diffOutput(QFutureInterface<void> &fi, int pr
}
if (skippedLines >= -1) {
leftFormats[blockNumber].append(DiffSelection(input.m_chunkLineFormat));
rightFormats[blockNumber].append(DiffSelection(input.m_chunkLineFormat));
leftFormats[blockNumber].append({input.m_chunkLineFormat});
rightFormats[blockNumber].append({input.m_chunkLineFormat});
leftData.setSkippedLines(blockNumber, skippedLines);
rightData.setSkippedLines(blockNumber, skippedLines);
leftText += separator;

View File

@@ -314,7 +314,7 @@ QString UnifiedDiffData::setChunk(const DiffEditorInput &input, const ChunkData
QList<TextLineData> leftBuffer, rightBuffer;
QList<int> leftRowsBuffer, rightRowsBuffer;
(*selections)[*blockNumber].append(DiffSelection(input.m_chunkLineFormat));
(*selections)[*blockNumber].append({input.m_chunkLineFormat});
int lastEqualRow = -1;
if (lastChunk) {
@@ -346,14 +346,14 @@ QString UnifiedDiffData::setChunk(const DiffEditorInput &input, const ChunkData
const int blockDelta = line.count('\n'); // no new line
// could have been added
for (int k = 0; k < blockDelta; k++)
(*selections)[*blockNumber + blockCount + 1 + k].append(input.m_leftLineFormat);
(*selections)[*blockNumber + blockCount + 1 + k].append({input.m_leftLineFormat});
for (auto it = lineData.changedPositions.cbegin(),
end = lineData.changedPositions.cend(); it != end; ++it) {
const int startPos = it.key() < 0 ? 1 : it.key() + 1;
const int endPos = it.value() < 0 ? it.value() : it.value() + 1;
(*selections)[*blockNumber + blockCount + 1].append(
DiffSelection(startPos, endPos, input.m_leftCharFormat));
{input.m_leftCharFormat, startPos, endPos});
}
if (!line.isEmpty()) {
@@ -385,14 +385,14 @@ QString UnifiedDiffData::setChunk(const DiffEditorInput &input, const ChunkData
// could have been added
for (int k = 0; k < blockDelta; k++)
(*selections)[*blockNumber + blockCount + 1 + k].append(input.m_rightLineFormat);
(*selections)[*blockNumber + blockCount + 1 + k].append({input.m_rightLineFormat});
for (auto it = lineData.changedPositions.cbegin(),
end = lineData.changedPositions.cend(); it != end; ++it) {
const int startPos = it.key() < 0 ? 1 : it.key() + 1;
const int endPos = it.value() < 0 ? it.value() : it.value() + 1;
(*selections)[*blockNumber + blockCount + 1].append
(DiffSelection(startPos, endPos, input.m_rightCharFormat));
(*selections)[*blockNumber + blockCount + 1].append(
{input.m_rightCharFormat, startPos, endPos});
}
if (!line.isEmpty()) {
@@ -477,10 +477,10 @@ UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface<void> &fi, int progr
const QString rightFileInfo = "+++ " + fileData.fileInfo[RightSide].fileName + '\n';
setFileInfo(blockNumber, fileData.fileInfo[LeftSide], fileData.fileInfo[RightSide]);
output.foldingIndent.insert(blockNumber, 1);
output.selections[blockNumber].append(DiffSelection(input.m_fileLineFormat));
output.selections[blockNumber].append({input.m_fileLineFormat});
blockNumber++;
output.foldingIndent.insert(blockNumber, 1);
output.selections[blockNumber].append(DiffSelection(input.m_fileLineFormat));
output.selections[blockNumber].append({input.m_fileLineFormat});
blockNumber++;
output.diffText += leftFileInfo;
@@ -489,7 +489,7 @@ UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface<void> &fi, int progr
if (fileData.binaryFiles) {
output.foldingIndent.insert(blockNumber, 2);
output.selections[blockNumber].append(DiffSelection(input.m_chunkLineFormat));
output.selections[blockNumber].append({input.m_chunkLineFormat});
blockNumber++;
const QString binaryLine = "Binary files "
+ fileData.fileInfo[LeftSide].fileName