diff --git a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp index e2bb9f721f5..b2b1ec428d8 100644 --- a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp +++ b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp @@ -1021,7 +1021,7 @@ void SideBySideDiffEditorWidget::showDiff() if (futureInterface.isCanceled()) futureInterface.reportCanceled(); }); - const int firstPartMax = 20; // showDiff is about 4 times quicker than filling document + const int firstPartMax = 20; // diffOutput is about 4 times quicker than filling document const int leftPartMax = 60; const int rightPartMax = 100; futureInterface.setProgressRange(0, rightPartMax); diff --git a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp index a92fc669c3f..059bf522ce0 100644 --- a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp +++ b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp @@ -423,8 +423,8 @@ QString UnifiedDiffData::setChunk(const DiffEditorInput &input, const ChunkData return diffText; } -UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface &fi, int progressMin, - int progressMax, const DiffEditorInput &input) +UnifiedDiffOutput UnifiedDiffData::diffOutput(QFutureInterface &fi, int progressMin, + int progressMax, const DiffEditorInput &input) { UnifiedDiffOutput output; @@ -436,7 +436,7 @@ UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface &fi, int progr for (const FileData &fileData : qAsConst(input.m_contextFileData)) { 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.diffData.setFileInfo(blockNumber, fileData.fileInfo[LeftSide], fileData.fileInfo[RightSide]); output.foldingIndent.insert(blockNumber, 1); output.selections[blockNumber].append({input.m_fileLineFormat}); blockNumber++; @@ -463,14 +463,14 @@ UnifiedDiffOutput UnifiedDiffData::setDiff(QFutureInterface &fi, int progr for (int j = 0; j < fileData.chunks.count(); j++) { const int oldBlockNumber = blockNumber; output.foldingIndent.insert(blockNumber, 2); - output.diffText += setChunk(input, fileData.chunks.at(j), - (j == fileData.chunks.count() - 1) - && fileData.lastChunkAtTheEndOfFile, - &blockNumber, - &charNumber, - &output.selections); + output.diffText += output.diffData.setChunk(input, fileData.chunks.at(j), + (j == fileData.chunks.count() - 1) + && fileData.lastChunkAtTheEndOfFile, + &blockNumber, + &charNumber, + &output.selections); if (!fileData.chunks.at(j).contextChunk) - setChunkIndex(oldBlockNumber, blockNumber - oldBlockNumber, j); + output.diffData.setChunkIndex(oldBlockNumber, blockNumber - oldBlockNumber, j); } } fi.setProgressValue(DiffUtils::interpolate(++i, 0, count, progressMin, progressMax)); @@ -521,17 +521,16 @@ void UnifiedDiffEditorWidget::showDiff() futureInterface.reportCanceled(); }); const int progressMax = 100; - const int firstPartMax = 20; // showDiff is about 4 times quicker than filling document + const int firstPartMax = 20; // diffOutput is about 4 times quicker than filling document futureInterface.setProgressRange(0, progressMax); futureInterface.setProgressValue(0); QFutureInterface fi = futureInterface; - UnifiedDiffData diffData; - const UnifiedDiffOutput output = diffData.setDiff(fi, 0, firstPartMax, input); + const UnifiedDiffOutput output = UnifiedDiffData::diffOutput(fi, 0, firstPartMax, input); if (futureInterface.isCanceled()) return; const ShowResult result = {TextDocumentPtr(new TextDocument("DiffEditor.UnifiedDiffEditor")), - diffData, output.selections}; + output.diffData, output.selections}; // No need to store the change history result.textDocument->document()->setUndoRedoEnabled(false); diff --git a/src/plugins/diffeditor/unifieddiffeditorwidget.h b/src/plugins/diffeditor/unifieddiffeditorwidget.h index a71af995bb1..ec902e6f1c0 100644 --- a/src/plugins/diffeditor/unifieddiffeditorwidget.h +++ b/src/plugins/diffeditor/unifieddiffeditorwidget.h @@ -24,23 +24,13 @@ class ChunkSelection; namespace Internal { class DiffEditorDocument; - -class UnifiedDiffOutput -{ -public: - QString diffText; - // 'foldingIndent' is populated with and folding indentation - // value where 1 indicates start of new file and 2 indicates a diff chunk. - // Remaining lines (diff contents) are assigned 3. - QHash foldingIndent; - DiffSelections selections; -}; +class UnifiedDiffOutput; class UnifiedDiffData { public: - UnifiedDiffOutput setDiff(QFutureInterface &fi, int progressMin, int progressMax, - const DiffEditorInput &input); + static UnifiedDiffOutput diffOutput(QFutureInterface &fi, int progressMin, int progressMax, + const DiffEditorInput &input); // block number, visual line number, chunk row number using LineNumbers = QMap>; @@ -61,6 +51,18 @@ private: DiffSelections *selections); }; +class UnifiedDiffOutput +{ +public: + UnifiedDiffData diffData; + QString diffText; + // 'foldingIndent' is populated with and folding indentation + // value where 1 indicates start of new file and 2 indicates a diff chunk. + // Remaining lines (diff contents) are assigned 3. + QHash foldingIndent; + DiffSelections selections; +}; + class UnifiedDiffEditorWidget final : public SelectableTextEditorWidget { Q_OBJECT