DiffEditor: Use DiffSide enum inside FileData

Change-Id: I4c18c52a9737cc46c3faeadf0abd5c4771463e0e
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Jarek Kobus
2022-09-26 15:28:00 +02:00
parent 6dc412e255
commit f3a7299761
8 changed files with 88 additions and 99 deletions

View File

@@ -311,8 +311,8 @@ void DiffEditor::documentHasChanged()
m_entriesComboBox->clear();
for (const FileData &diffFile : diffFileList) {
const DiffFileInfo &leftEntry = diffFile.leftFileInfo;
const DiffFileInfo &rightEntry = diffFile.rightFileInfo;
const DiffFileInfo &leftEntry = diffFile.fileInfo[LeftSide];
const DiffFileInfo &rightEntry = diffFile.fileInfo[RightSide];
const QString leftShortFileName = Utils::FilePath::fromString(leftEntry.fileName).fileName();
const QString rightShortFileName = Utils::FilePath::fromString(rightEntry.fileName).fileName();
QString itemText;
@@ -445,8 +445,8 @@ void DiffEditor::reloadHasFinished(bool success)
const int count = diffFileList.count();
for (int i = 0; i < count; i++) {
const FileData &diffFile = diffFileList.at(i);
const DiffFileInfo &leftEntry = diffFile.leftFileInfo;
const DiffFileInfo &rightEntry = diffFile.rightFileInfo;
const DiffFileInfo &leftEntry = diffFile.fileInfo[LeftSide];
const DiffFileInfo &rightEntry = diffFile.fileInfo[RightSide];
if ((m_currentFileChunk.first.isEmpty()
&& m_currentFileChunk.second.isEmpty()
&& startupFile.endsWith(rightEntry.fileName))

View File

@@ -135,8 +135,8 @@ QString DiffEditorDocument::makePatch(int fileIndex, int chunkIndex,
const QString fileName = !overriddenFileName.isEmpty()
? overriddenFileName : revert
? fileData.rightFileInfo.fileName
: fileData.leftFileInfo.fileName;
? fileData.fileInfo[RightSide].fileName
: fileData.fileInfo[LeftSide].fileName;
QString leftPrefix, rightPrefix;
if (addPrefix) {

View File

@@ -90,8 +90,7 @@ public:
outputLeftDiffList, outputRightDiffList);
fileData = DiffUtils::calculateContextData(chunkData, m_contextLineCount, 0);
}
fileData.leftFileInfo = reloadInfo.leftFileInfo;
fileData.rightFileInfo = reloadInfo.rightFileInfo;
fileData.fileInfo = {reloadInfo.leftFileInfo, reloadInfo.rightFileInfo};
fileData.fileOperation = reloadInfo.fileOperation;
fileData.binaryFiles = reloadInfo.binaryFiles;
futureInterface.reportResult(fileData);
@@ -838,8 +837,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testMakePatch()
QCOMPARE(resultList.count(), 1);
for (int i = 0; i < resultList.count(); i++) {
const FileData &resultFileData = resultList.at(i);
QCOMPARE(resultFileData.leftFileInfo.fileName, fileName);
QCOMPARE(resultFileData.rightFileInfo.fileName, fileName);
QCOMPARE(resultFileData.fileInfo[LeftSide].fileName, fileName);
QCOMPARE(resultFileData.fileInfo[RightSide].fileName, fileName);
QCOMPARE(resultFileData.chunks.count(), 1);
for (int j = 0; j < resultFileData.chunks.count(); j++) {
const ChunkData &resultChunkData = resultFileData.chunks.at(j);
@@ -946,8 +945,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
;
FileData fileData1;
fileData1.leftFileInfo = DiffFileInfo("src/plugins/diffeditor/diffeditor.cpp", "eab9e9b");
fileData1.rightFileInfo = DiffFileInfo("src/plugins/diffeditor/diffeditor.cpp", "082c135");
fileData1.fileInfo = {DiffFileInfo("src/plugins/diffeditor/diffeditor.cpp", "eab9e9b"),
DiffFileInfo("src/plugins/diffeditor/diffeditor.cpp", "082c135")};
ChunkData chunkData1;
chunkData1.startingLineNumber = {186, 186};
QList<RowData> rows1;
@@ -964,8 +963,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
fileData1.chunks << chunkData1;
FileData fileData2;
fileData2.leftFileInfo = DiffFileInfo(_("src/plugins/diffeditor/diffutils.cpp"), _("2f641c9"));
fileData2.rightFileInfo = DiffFileInfo(_("src/plugins/diffeditor/diffutils.cpp"), _("f8ff795"));
fileData2.fileInfo = {DiffFileInfo(_("src/plugins/diffeditor/diffutils.cpp"), _("2f641c9")),
DiffFileInfo(_("src/plugins/diffeditor/diffutils.cpp"), _("f8ff795"))};
ChunkData chunkData2;
chunkData2.startingLineNumber = {463, 463};
QList<RowData> rows2;
@@ -985,8 +984,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
fileData2.chunks << chunkData2;
FileData fileData3;
fileData3.leftFileInfo = DiffFileInfo("new", "0000000");
fileData3.rightFileInfo = DiffFileInfo("new", "257cc56");
fileData3.fileInfo = {DiffFileInfo("new", "0000000"), DiffFileInfo("new", "257cc56")};
fileData3.fileOperation = FileData::NewFile;
ChunkData chunkData3;
chunkData3.startingLineNumber = {-1, 0};
@@ -998,8 +996,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
fileData3.chunks << chunkData3;
FileData fileData4;
fileData4.leftFileInfo = DiffFileInfo("deleted", "257cc56");
fileData4.rightFileInfo = DiffFileInfo("deleted", "0000000");
fileData4.fileInfo = {DiffFileInfo("deleted", "257cc56"), DiffFileInfo("deleted", "0000000")};
fileData4.fileOperation = FileData::DeleteFile;
ChunkData chunkData4;
chunkData4.startingLineNumber = {0, -1};
@@ -1011,18 +1008,16 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
fileData4.chunks << chunkData4;
FileData fileData5;
fileData5.leftFileInfo = DiffFileInfo("empty", "0000000");
fileData5.rightFileInfo = DiffFileInfo("empty", "e69de29");
fileData5.fileInfo = {DiffFileInfo("empty", "0000000"), DiffFileInfo("empty", "e69de29")};
fileData5.fileOperation = FileData::NewFile;
FileData fileData6;
fileData6.leftFileInfo = DiffFileInfo("empty", "e69de29");
fileData6.rightFileInfo = DiffFileInfo("empty", "0000000");
fileData6.fileInfo = {DiffFileInfo("empty", "e69de29"), DiffFileInfo("empty", "0000000")};
fileData6.fileOperation = FileData::DeleteFile;
FileData fileData7;
fileData7.leftFileInfo = DiffFileInfo("file a.txt", "1234567");
fileData7.rightFileInfo = DiffFileInfo("file b.txt", "9876543");
fileData7.fileInfo = {DiffFileInfo("file a.txt", "1234567"),
DiffFileInfo("file b.txt", "9876543")};
fileData7.fileOperation = FileData::CopyFile;
ChunkData chunkData7;
chunkData7.startingLineNumber = {19, 19};
@@ -1034,13 +1029,11 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
fileData7.chunks << chunkData7;
FileData fileData8;
fileData8.leftFileInfo = DiffFileInfo("file a.txt");
fileData8.rightFileInfo = DiffFileInfo("file b.txt");
fileData8.fileInfo = {DiffFileInfo("file a.txt"), DiffFileInfo("file b.txt")};
fileData8.fileOperation = FileData::RenameFile;
FileData fileData9;
fileData9.leftFileInfo = DiffFileInfo("file.txt", "1234567");
fileData9.rightFileInfo = DiffFileInfo("file.txt", "9876543");
fileData9.fileInfo = {DiffFileInfo("file.txt", "1234567"), DiffFileInfo("file.txt", "9876543")};
fileData9.chunks << chunkData7;
QList<FileData> fileDataList1;
fileDataList1 << fileData1 << fileData2 << fileData3 << fileData4 << fileData5
@@ -1061,8 +1054,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
" C\n"
"+\n";
fileData1.leftFileInfo = DiffFileInfo("file foo.txt", "1234567");
fileData1.rightFileInfo = DiffFileInfo("file foo.txt", "9876543");
fileData1.fileInfo = {DiffFileInfo("file foo.txt", "1234567"),
DiffFileInfo("file foo.txt", "9876543")};
fileData1.fileOperation = FileData::ChangeFile;
chunkData1.startingLineNumber = {49, 49};
rows1.clear();
@@ -1091,8 +1084,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
"\\ No newline at end of file\n"
"+ABCD\n";
fileData1.leftFileInfo = DiffFileInfo("file foo.txt", "1234567");
fileData1.rightFileInfo = DiffFileInfo("file foo.txt", "9876543");
fileData1.fileInfo = {DiffFileInfo("file foo.txt", "1234567"),
DiffFileInfo("file foo.txt", "9876543")};
fileData1.fileOperation = FileData::ChangeFile;
chunkData1.startingLineNumber = {0, 0};
rows1.clear();
@@ -1126,8 +1119,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
"+F\n"
;
fileData1.leftFileInfo = DiffFileInfo("difftest.txt", "1234567");
fileData1.rightFileInfo = DiffFileInfo("difftest.txt", "9876543");
fileData1.fileInfo = {DiffFileInfo("difftest.txt", "1234567"),
DiffFileInfo("difftest.txt", "9876543")};
fileData1.fileOperation = FileData::ChangeFile;
chunkData1.startingLineNumber = {1, 1};
rows1.clear();
@@ -1167,8 +1160,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
"+EFGH\n"
"\\ No newline at end of file\n";
fileData1.leftFileInfo = DiffFileInfo("file foo.txt", "1234567");
fileData1.rightFileInfo = DiffFileInfo("file foo.txt", "9876543");
fileData1.fileInfo = {DiffFileInfo("file foo.txt", "1234567"),
DiffFileInfo("file foo.txt", "9876543")};
fileData1.fileOperation = FileData::ChangeFile;
chunkData1.startingLineNumber = {0, 0};
rows1.clear();
@@ -1209,12 +1202,12 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
;
fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("src/plugins/texteditor/basetextdocument.h");
fileData1.rightFileInfo = DiffFileInfo("src/plugins/texteditor/textdocument.h");
fileData1.fileInfo = {DiffFileInfo("src/plugins/texteditor/basetextdocument.h"),
DiffFileInfo("src/plugins/texteditor/textdocument.h")};
fileData1.fileOperation = FileData::RenameFile;
fileData2 = FileData();
fileData2.leftFileInfo = DiffFileInfo("src/plugins/texteditor/basetextdocumentlayout.cpp", "0121933");
fileData2.rightFileInfo = DiffFileInfo("src/plugins/texteditor/textdocumentlayout.cpp", "01cc3a0");
fileData2.fileInfo = {DiffFileInfo("src/plugins/texteditor/basetextdocumentlayout.cpp", "0121933"),
DiffFileInfo("src/plugins/texteditor/textdocumentlayout.cpp", "01cc3a0")};
fileData2.fileOperation = FileData::RenameFile;
chunkData2.startingLineNumber = {1, 1};
rows2.clear();
@@ -1244,8 +1237,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
"+Subproject commit eda76354077a427d692fee05479910de31040d3f-dirty\n"
;
fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("src/shared/qbs");
fileData1.rightFileInfo = DiffFileInfo("src/shared/qbs");
fileData1.fileInfo = {DiffFileInfo("src/shared/qbs"), DiffFileInfo("src/shared/qbs")};
chunkData1.startingLineNumber = {0, 0};
rows1.clear();
rows1 << RowData(_("Subproject commit eda76354077a427d692fee05479910de31040d3f"),
@@ -1278,8 +1270,8 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
;
fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("demos/arthurplugin/arthurplugin.pro", "0000000");
fileData1.rightFileInfo = DiffFileInfo("demos/arthurplugin/arthurplugin.pro", "c5132b4");
fileData1.fileInfo = {DiffFileInfo("demos/arthurplugin/arthurplugin.pro", "0000000"),
DiffFileInfo("demos/arthurplugin/arthurplugin.pro", "c5132b4")};
fileData1.fileOperation = FileData::NewFile;
chunkData1 = ChunkData();
chunkData1.startingLineNumber = {-1, 0};
@@ -1289,13 +1281,13 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
chunkData1.rows = rows1;
fileData1.chunks << chunkData1;
fileData2 = FileData();
fileData2.leftFileInfo = DiffFileInfo("demos/arthurplugin/bg1.jpg", "0000000");
fileData2.rightFileInfo = DiffFileInfo("demos/arthurplugin/bg1.jpg", "dfc7cee");
fileData2.fileInfo = {DiffFileInfo("demos/arthurplugin/bg1.jpg", "0000000"),
DiffFileInfo("demos/arthurplugin/bg1.jpg", "dfc7cee")};
fileData2.fileOperation = FileData::NewFile;
fileData2.binaryFiles = true;
fileData3 = FileData();
fileData3.leftFileInfo = DiffFileInfo("demos/arthurplugin/flower.jpg", "0000000");
fileData3.rightFileInfo = DiffFileInfo("demos/arthurplugin/flower.jpg", "f8e022c");
fileData3.fileInfo = {DiffFileInfo("demos/arthurplugin/flower.jpg", "0000000"),
DiffFileInfo("demos/arthurplugin/flower.jpg", "f8e022c")};
fileData3.fileOperation = FileData::NewFile;
fileData3.binaryFiles = true;
@@ -1312,8 +1304,7 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch_data()
;
fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("script.sh");
fileData1.rightFileInfo = DiffFileInfo("script.sh");
fileData1.fileInfo = {DiffFileInfo("script.sh"), DiffFileInfo("script.sh")};
fileData1.fileOperation = FileData::ChangeMode;
QList<FileData> fileDataList9;
@@ -1332,8 +1323,7 @@ rename to new.sh
;
fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("old.sh");
fileData1.rightFileInfo = DiffFileInfo("new.sh");
fileData1.fileInfo = {DiffFileInfo("old.sh"), DiffFileInfo("new.sh")};
fileData1.fileOperation = FileData::RenameFile;
QList<FileData> fileDataList10;
@@ -1350,8 +1340,8 @@ rename to new.sh
"+++ src/plugins/subversion/subversioneditor.cpp\t(revision 0)\n"
"@@ -0,0 +125 @@\n\n";
fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp");
fileData1.rightFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp");
fileData1.fileInfo = {DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"),
DiffFileInfo("src/plugins/subversion/subversioneditor.cpp")};
chunkData1 = ChunkData();
chunkData1.startingLineNumber = {-1, 124};
fileData1.chunks << chunkData1;
@@ -1369,8 +1359,8 @@ rename to new.sh
"+++ src/plugins/subversion/subversioneditor.cpp\t(working copy)\n"
"@@ -1,125 +0,0 @@\n\n";
fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp");
fileData1.rightFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp");
fileData1.fileInfo = {DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"),
DiffFileInfo("src/plugins/subversion/subversioneditor.cpp")};
chunkData1 = ChunkData();
chunkData1.startingLineNumber = {0, -1};
fileData1.chunks << chunkData1;
@@ -1388,8 +1378,8 @@ rename to new.sh
"+++ src/plugins/subversion/subversioneditor.cpp\t(working copy)\n"
"@@ -120,7 +120,7 @@\n\n";
fileData1 = FileData();
fileData1.leftFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp");
fileData1.rightFileInfo = DiffFileInfo("src/plugins/subversion/subversioneditor.cpp");
fileData1.fileInfo = {DiffFileInfo("src/plugins/subversion/subversioneditor.cpp"),
DiffFileInfo("src/plugins/subversion/subversioneditor.cpp")};
chunkData1 = ChunkData();
chunkData1.startingLineNumber = {119, 119};
fileData1.chunks << chunkData1;
@@ -1412,10 +1402,10 @@ void DiffEditor::Internal::DiffEditorPlugin::testReadPatch()
for (int i = 0; i < fileDataList.count(); i++) {
const FileData &origFileData = fileDataList.at(i);
const FileData &resultFileData = result.at(i);
QCOMPARE(resultFileData.leftFileInfo.fileName, origFileData.leftFileInfo.fileName);
QCOMPARE(resultFileData.leftFileInfo.typeInfo, origFileData.leftFileInfo.typeInfo);
QCOMPARE(resultFileData.rightFileInfo.fileName, origFileData.rightFileInfo.fileName);
QCOMPARE(resultFileData.rightFileInfo.typeInfo, origFileData.rightFileInfo.typeInfo);
QCOMPARE(resultFileData.fileInfo[LeftSide].fileName, origFileData.fileInfo[LeftSide].fileName);
QCOMPARE(resultFileData.fileInfo[LeftSide].typeInfo, origFileData.fileInfo[LeftSide].typeInfo);
QCOMPARE(resultFileData.fileInfo[RightSide].fileName, origFileData.fileInfo[RightSide].fileName);
QCOMPARE(resultFileData.fileInfo[RightSide].typeInfo, origFileData.fileInfo[RightSide].typeInfo);
QCOMPARE(resultFileData.chunks.count(), origFileData.chunks.count());
QCOMPARE(resultFileData.fileOperation, origFileData.fileOperation);
for (int j = 0; j < origFileData.chunks.count(); j++) {

View File

@@ -150,11 +150,11 @@ void DiffEditorWidgetController::patch(bool revert, int fileIndex, int chunkInde
const FileData fileData = m_contextFileData.at(fileIndex);
const QString fileName = revert
? fileData.rightFileInfo.fileName
: fileData.leftFileInfo.fileName;
? fileData.fileInfo[RightSide].fileName
: fileData.fileInfo[LeftSide].fileName;
const DiffFileInfo::PatchBehaviour patchBehaviour = revert
? fileData.rightFileInfo.patchBehaviour
: fileData.leftFileInfo.patchBehaviour;
? fileData.fileInfo[RightSide].patchBehaviour
: fileData.fileInfo[LeftSide].patchBehaviour;
const FilePath workingDirectory = m_document->baseDirectory().isEmpty()
? FilePath::fromString(fileName).absolutePath()
@@ -270,7 +270,7 @@ ChunkData DiffEditorWidgetController::chunkData(int fileIndex, int chunkIndex) c
bool DiffEditorWidgetController::fileNamesAreDifferent(int fileIndex) const
{
const FileData fileData = m_contextFileData.at(fileIndex);
return fileData.leftFileInfo.fileName != fileData.rightFileInfo.fileName;
return fileData.fileInfo[LeftSide].fileName != fileData.fileInfo[RightSide].fileName;
}
void DiffEditorWidgetController::addApplyAction(QMenu *menu, int fileIndex, int chunkIndex)

View File

@@ -470,7 +470,7 @@ static QString leftFileName(const FileData &fileData, unsigned formatFlags)
} else {
if (formatFlags & DiffUtils::AddLevel)
str << "a/";
str << fileData.leftFileInfo.fileName;
str << fileData.fileInfo[LeftSide].fileName;
}
return diffText;
}
@@ -484,7 +484,7 @@ static QString rightFileName(const FileData &fileData, unsigned formatFlags)
} else {
if (formatFlags & DiffUtils::AddLevel)
str << "b/";
str << fileData.rightFileInfo.fileName;
str << fileData.fileInfo[RightSide].fileName;
}
return diffText;
}
@@ -497,8 +497,8 @@ QString DiffUtils::makePatch(const QList<FileData> &fileDataList, unsigned forma
for (int i = 0; i < fileDataList.size(); i++) {
const FileData &fileData = fileDataList.at(i);
if (formatFlags & GitFormat) {
str << "diff --git a/" << fileData.leftFileInfo.fileName
<< " b/" << fileData.rightFileInfo.fileName << '\n';
str << "diff --git a/" << fileData.fileInfo[LeftSide].fileName
<< " b/" << fileData.fileInfo[RightSide].fileName << '\n';
}
if (fileData.fileOperation == FileData::NewFile
|| fileData.fileOperation == FileData::DeleteFile) { // git only?
@@ -508,7 +508,7 @@ QString DiffUtils::makePatch(const QList<FileData> &fileDataList, unsigned forma
str << "deleted";
str << " file mode 100644\n";
}
str << "index " << fileData.leftFileInfo.typeInfo << ".." << fileData.rightFileInfo.typeInfo;
str << "index " << fileData.fileInfo[LeftSide].typeInfo << ".." << fileData.fileInfo[RightSide].typeInfo;
if (fileData.fileOperation == FileData::ChangeFile)
str << " 100644";
str << "\n";
@@ -853,13 +853,13 @@ static FileData readDiffHeaderAndChunks(QStringView headerAndChunks, bool *ok)
const QRegularExpressionMatch leftMatch = leftFileRegExp.match(patch);
if (leftMatch.hasMatch() && leftMatch.capturedStart() == 0) {
patch = patch.mid(leftMatch.capturedEnd());
fileData.leftFileInfo.fileName = leftMatch.captured(1);
fileData.fileInfo[LeftSide].fileName = leftMatch.captured(1);
// followed by rightFileRegExp
const QRegularExpressionMatch rightMatch = rightFileRegExp.match(patch);
if (rightMatch.hasMatch() && rightMatch.capturedStart() == 0) {
patch = patch.mid(rightMatch.capturedEnd());
fileData.rightFileInfo.fileName = rightMatch.captured(1);
fileData.fileInfo[RightSide].fileName = rightMatch.captured(1);
fileData.chunks = readChunks(patch,
&fileData.lastChunkAtTheEndOfFile,
@@ -869,8 +869,8 @@ static FileData readDiffHeaderAndChunks(QStringView headerAndChunks, bool *ok)
// or by binaryRegExp
const QRegularExpressionMatch binaryMatch = binaryRegExp.match(patch);
if (binaryMatch.hasMatch() && binaryMatch.capturedStart() == 0) {
fileData.leftFileInfo.fileName = binaryMatch.captured(1);
fileData.rightFileInfo.fileName = binaryMatch.captured(2);
fileData.fileInfo[LeftSide].fileName = binaryMatch.captured(1);
fileData.fileInfo[RightSide].fileName = binaryMatch.captured(2);
fileData.binaryFiles = true;
readOk = true;
}
@@ -1012,12 +1012,12 @@ static bool detectIndexAndBinary(QStringView patch, FileData *fileData, QStringV
const int dotsPosition = indices.indexOf(QStringLiteral(".."));
if (dotsPosition < 0)
return false;
fileData->leftFileInfo.typeInfo = indices.left(dotsPosition).toString();
fileData->fileInfo[LeftSide].typeInfo = indices.left(dotsPosition).toString();
// if there is no space we take the remaining string
const int spacePosition = indices.indexOf(QChar::Space, dotsPosition + 2);
const int length = spacePosition < 0 ? -1 : spacePosition - dotsPosition - 2;
fileData->rightFileInfo.typeInfo = indices.mid(dotsPosition + 2, length).toString();
fileData->fileInfo[RightSide].typeInfo = indices.mid(dotsPosition + 2, length).toString();
*remainingPatch = afterNextLine;
} else if (fileData->fileOperation != FileData::ChangeFile) {
@@ -1034,9 +1034,9 @@ static bool detectIndexAndBinary(QStringView patch, FileData *fileData, QStringV
const QString devNull("/dev/null");
const QString leftFileName = fileData->fileOperation == FileData::NewFile
? devNull : QLatin1String("a/") + fileData->leftFileInfo.fileName;
? devNull : QLatin1String("a/") + fileData->fileInfo[LeftSide].fileName;
const QString rightFileName = fileData->fileOperation == FileData::DeleteFile
? devNull : QLatin1String("b/") + fileData->rightFileInfo.fileName;
? devNull : QLatin1String("b/") + fileData->fileInfo[RightSide].fileName;
const QString binaryLine = "Binary files "
+ leftFileName + " and "
@@ -1116,7 +1116,7 @@ static bool detectFileData(QStringView patch, FileData *fileData, QStringView *r
// change / new / delete
fileData->fileOperation = FileData::ChangeFile;
fileData->leftFileInfo.fileName = fileData->rightFileInfo.fileName = commonFileName.toString();
fileData->fileInfo[LeftSide].fileName = fileData->fileInfo[RightSide].fileName = commonFileName.toString();
QStringView afterSecondLine;
const QStringView secondLine = readLine(afterDiffGit, &afterSecondLine, &hasNewLine);
@@ -1172,10 +1172,10 @@ static bool detectFileData(QStringView patch, FileData *fileData, QStringView *r
const QLatin1String renameFrom("rename from ");
if (copyRenameFrom.startsWith(copyFrom)) {
fileData->fileOperation = FileData::CopyFile;
fileData->leftFileInfo.fileName = copyRenameFrom.mid(copyFrom.size()).toString();
fileData->fileInfo[LeftSide].fileName = copyRenameFrom.mid(copyFrom.size()).toString();
} else if (copyRenameFrom.startsWith(renameFrom)) {
fileData->fileOperation = FileData::RenameFile;
fileData->leftFileInfo.fileName = copyRenameFrom.mid(renameFrom.size()).toString();
fileData->fileInfo[LeftSide].fileName = copyRenameFrom.mid(renameFrom.size()).toString();
} else {
return false;
}
@@ -1189,9 +1189,9 @@ static bool detectFileData(QStringView patch, FileData *fileData, QStringView *r
const QLatin1String copyTo("copy to ");
const QLatin1String renameTo("rename to ");
if (fileData->fileOperation == FileData::CopyFile && copyRenameTo.startsWith(copyTo)) {
fileData->rightFileInfo.fileName = copyRenameTo.mid(copyTo.size()).toString();
fileData->fileInfo[RightSide].fileName = copyRenameTo.mid(copyTo.size()).toString();
} else if (fileData->fileOperation == FileData::RenameFile && copyRenameTo.startsWith(renameTo)) {
fileData->rightFileInfo.fileName = copyRenameTo.mid(renameTo.size()).toString();
fileData->fileInfo[RightSide].fileName = copyRenameTo.mid(renameTo.size()).toString();
} else {
return false;
}

View File

@@ -104,8 +104,7 @@ public:
FileData() = default;
FileData(const ChunkData &chunkData) { chunks.append(chunkData); }
QList<ChunkData> chunks;
DiffFileInfo leftFileInfo;
DiffFileInfo rightFileInfo;
std::array<DiffFileInfo, SideCount> fileInfo{};
FileOperation fileOperation = ChangeFile;
bool binaryFiles = false;
bool lastChunkAtTheEndOfFile = false;

View File

@@ -892,8 +892,8 @@ void SideBySideDiffEditorWidget::showDiff()
foldingIndent.insert(blockNumber, 1);
leftFormats[blockNumber].append(DiffSelection(&m_controller.m_fileLineFormat));
rightFormats[blockNumber].append(DiffSelection(&m_controller.m_fileLineFormat));
m_leftEditor->setFileInfo(blockNumber, contextFileData.leftFileInfo);
m_rightEditor->setFileInfo(blockNumber, contextFileData.rightFileInfo);
m_leftEditor->setFileInfo(blockNumber, contextFileData.fileInfo[LeftSide]);
m_rightEditor->setFileInfo(blockNumber, contextFileData.fileInfo[RightSide]);
leftText = separator;
rightText = separator;
blockNumber++;
@@ -1051,8 +1051,8 @@ void SideBySideDiffEditorWidget::slotLeftJumpToOriginalFileRequested(
return;
const FileData fileData = m_controller.m_contextFileData.at(diffFileIndex);
const QString leftFileName = fileData.leftFileInfo.fileName;
const QString rightFileName = fileData.rightFileInfo.fileName;
const QString leftFileName = fileData.fileInfo[LeftSide].fileName;
const QString rightFileName = fileData.fileInfo[RightSide].fileName;
if (leftFileName == rightFileName) {
// The same file (e.g. in git diff), jump to the line number taken from the right editor.
// Warning: git show SHA^ vs SHA or git diff HEAD vs Index
@@ -1090,7 +1090,7 @@ void SideBySideDiffEditorWidget::slotRightJumpToOriginalFileRequested(
return;
const FileData fileData = m_controller.m_contextFileData.at(diffFileIndex);
const QString fileName = fileData.rightFileInfo.fileName;
const QString fileName = fileData.fileInfo[RightSide].fileName;
m_controller.jumpToOriginalFile(fileName, lineNumber, columnNumber);
}

View File

@@ -492,9 +492,9 @@ UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface<void> &fi, int progr
const int count = input.m_contextFileData.size();
for (const FileData &fileData : qAsConst(input.m_contextFileData)) {
const QString leftFileInfo = "--- " + fileData.leftFileInfo.fileName + '\n';
const QString rightFileInfo = "+++ " + fileData.rightFileInfo.fileName + '\n';
setFileInfo(blockNumber, fileData.leftFileInfo, fileData.rightFileInfo);
const QString leftFileInfo = "--- " + fileData.fileInfo[LeftSide].fileName + '\n';
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));
blockNumber++;
@@ -511,9 +511,9 @@ UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface<void> &fi, int progr
output.selections[blockNumber].append(DiffSelection(input.m_chunkLineFormat));
blockNumber++;
const QString binaryLine = "Binary files "
+ fileData.leftFileInfo.fileName
+ fileData.fileInfo[LeftSide].fileName
+ " and "
+ fileData.rightFileInfo.fileName
+ fileData.fileInfo[RightSide].fileName
+ " differ\n";
output.diffText += binaryLine;
charNumber += binaryLine.count();
@@ -672,8 +672,8 @@ void UnifiedDiffEditorWidget::jumpToOriginalFile(const QTextCursor &cursor)
return;
const FileData fileData = m_controller.m_contextFileData.at(fileIndex);
const QString leftFileName = fileData.leftFileInfo.fileName;
const QString rightFileName = fileData.rightFileInfo.fileName;
const QString leftFileName = fileData.fileInfo[LeftSide].fileName;
const QString rightFileName = fileData.fileInfo[RightSide].fileName;
const int columnNumber = cursor.positionInBlock() - 1; // -1 for the first character in line