DiffEditor: Add context info to side by side editor

Task-number: QTCREATORBUG-18289
Change-Id: Ibc4a626c22cc1d96b27e8744a87dd2780cec549e
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
Orgad Shaneh
2017-06-02 10:13:36 +03:00
committed by Orgad Shaneh
parent d64fa1ee48
commit 9154a457fd

View File

@@ -64,8 +64,8 @@ public:
void setLineNumber(int blockNumber, int lineNumber); void setLineNumber(int blockNumber, int lineNumber);
void setFileInfo(int blockNumber, const DiffFileInfo &fileInfo); void setFileInfo(int blockNumber, const DiffFileInfo &fileInfo);
void setSkippedLines(int blockNumber, int skippedLines) { void setSkippedLines(int blockNumber, int skippedLines, const QString &contextInfo = QString()) {
m_skippedLines[blockNumber] = skippedLines; m_skippedLines[blockNumber] = qMakePair(skippedLines, contextInfo);
setSeparator(blockNumber, true); setSeparator(blockNumber, true);
} }
void setChunkIndex(int startBlockNumber, int blockCount, int chunkIndex); void setChunkIndex(int startBlockNumber, int blockCount, int chunkIndex);
@@ -126,8 +126,8 @@ private:
int m_lineNumberDigits = 1; int m_lineNumberDigits = 1;
// block number, fileInfo. Set for file lines only. // block number, fileInfo. Set for file lines only.
QMap<int, DiffFileInfo> m_fileInfo; QMap<int, DiffFileInfo> m_fileInfo;
// block number, skipped lines. Set for chunk lines only. // block number, skipped lines and context info. Set for chunk lines only.
QMap<int, int> m_skippedLines; QMap<int, QPair<int, QString> > m_skippedLines;
// start block number, block count of a chunk, chunk index inside a file. // start block number, block count of a chunk, chunk index inside a file.
QMap<int, QPair<int, int> > m_chunkInfo; QMap<int, QPair<int, int> > m_chunkInfo;
// block number, separator. Set for file, chunk or span line. // block number, separator. Set for file, chunk or span line.
@@ -465,9 +465,11 @@ void SideDiffEditorWidget::paintEvent(QPaintEvent *e)
if (bottom >= e->rect().top()) { if (bottom >= e->rect().top()) {
const int blockNumber = currentBlock.blockNumber(); const int blockNumber = currentBlock.blockNumber();
const int skippedBefore = m_skippedLines.value(blockNumber); auto it = m_skippedLines.constFind(blockNumber);
if (skippedBefore) { if (it != m_skippedLines.constEnd()) {
const QString skippedRowsText = skippedText(skippedBefore); QString skippedRowsText = '[' + skippedText(it->first) + ']';
if (!it->second.isEmpty())
skippedRowsText += ' ' + it->second;
paintSeparator(painter, m_chunkLineForeground, paintSeparator(painter, m_chunkLineForeground,
skippedRowsText, currentBlock, top); skippedRowsText, currentBlock, top);
} }
@@ -718,8 +720,8 @@ void SideBySideDiffEditorWidget::showDiff()
if (skippedLines > 0) { if (skippedLines > 0) {
leftFormats[blockNumber].append(DiffSelection(&m_controller.m_chunkLineFormat)); leftFormats[blockNumber].append(DiffSelection(&m_controller.m_chunkLineFormat));
rightFormats[blockNumber].append(DiffSelection(&m_controller.m_chunkLineFormat)); rightFormats[blockNumber].append(DiffSelection(&m_controller.m_chunkLineFormat));
m_leftEditor->setSkippedLines(blockNumber, skippedLines); m_leftEditor->setSkippedLines(blockNumber, skippedLines, chunkData.contextInfo);
m_rightEditor->setSkippedLines(blockNumber, skippedLines); m_rightEditor->setSkippedLines(blockNumber, skippedLines, chunkData.contextInfo);
leftText += separator; leftText += separator;
rightText += separator; rightText += separator;
blockNumber++; blockNumber++;