forked from qt-creator/qt-creator
DiffEditor: Fix scrolling to current file after reloading
This feature got broken during recent refactorings. Change-Id: I9d2d24e7ed63d5512b64c53e4bb9303497871d5e Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -43,6 +43,8 @@ public:
|
|||||||
void addExtraActions(QMenu *menu, int fileIndex, int chunkIndex, const ChunkSelection &selection);
|
void addExtraActions(QMenu *menu, int fileIndex, int chunkIndex, const ChunkSelection &selection);
|
||||||
void updateCannotDecodeInfo();
|
void updateCannotDecodeInfo();
|
||||||
void setBusyShowing(bool busy);
|
void setBusyShowing(bool busy);
|
||||||
|
void setCurrentDiffFileIndex(int index) { m_currentDiffFileIndex = index; }
|
||||||
|
int currentDiffFileIndex() const { return m_currentDiffFileIndex; }
|
||||||
|
|
||||||
ChunkData chunkData(int fileIndex, int chunkIndex) const;
|
ChunkData chunkData(int fileIndex, int chunkIndex) const;
|
||||||
|
|
||||||
@@ -74,6 +76,7 @@ private:
|
|||||||
DiffEditorDocument *m_document = nullptr;
|
DiffEditorDocument *m_document = nullptr;
|
||||||
|
|
||||||
bool m_isBusyShowing = false;
|
bool m_isBusyShowing = false;
|
||||||
|
int m_currentDiffFileIndex = -1;
|
||||||
Utils::ProgressIndicator *m_progressIndicator = nullptr;
|
Utils::ProgressIndicator *m_progressIndicator = nullptr;
|
||||||
QTimer m_timer;
|
QTimer m_timer;
|
||||||
};
|
};
|
||||||
|
@@ -950,6 +950,8 @@ void SideBySideDiffEditorWidget::setCurrentDiffFileIndex(int diffFileIndex)
|
|||||||
const int blockNumber = m_leftEditor->diffData().blockNumberForFileIndex(diffFileIndex);
|
const int blockNumber = m_leftEditor->diffData().blockNumberForFileIndex(diffFileIndex);
|
||||||
|
|
||||||
const GuardLocker locker(m_controller.m_ignoreChanges);
|
const GuardLocker locker(m_controller.m_ignoreChanges);
|
||||||
|
m_controller.setCurrentDiffFileIndex(diffFileIndex);
|
||||||
|
|
||||||
QTextBlock leftBlock = m_leftEditor->document()->findBlockByNumber(blockNumber);
|
QTextBlock leftBlock = m_leftEditor->document()->findBlockByNumber(blockNumber);
|
||||||
QTextCursor leftCursor = m_leftEditor->textCursor();
|
QTextCursor leftCursor = m_leftEditor->textCursor();
|
||||||
leftCursor.setPosition(leftBlock.position());
|
leftCursor.setPosition(leftBlock.position());
|
||||||
@@ -1009,6 +1011,7 @@ void SideBySideDiffEditorWidget::showDiff()
|
|||||||
}
|
}
|
||||||
m_leftEditor->setSelections(results[LeftSide].selections);
|
m_leftEditor->setSelections(results[LeftSide].selections);
|
||||||
m_rightEditor->setSelections(results[RightSide].selections);
|
m_rightEditor->setSelections(results[RightSide].selections);
|
||||||
|
setCurrentDiffFileIndex(m_controller.currentDiffFileIndex());
|
||||||
}
|
}
|
||||||
m_watcher.release()->deleteLater();
|
m_watcher.release()->deleteLater();
|
||||||
m_controller.setBusyShowing(false);
|
m_controller.setBusyShowing(false);
|
||||||
@@ -1241,6 +1244,7 @@ void SideBySideDiffEditorWidget::handlePositionChange(SideDiffEditorWidget *sour
|
|||||||
|
|
||||||
const GuardLocker locker(m_controller.m_ignoreChanges);
|
const GuardLocker locker(m_controller.m_ignoreChanges);
|
||||||
syncCursor(source, dest);
|
syncCursor(source, dest);
|
||||||
|
m_controller.setCurrentDiffFileIndex(fileIndex);
|
||||||
emit currentDiffFileIndexChanged(fileIndex);
|
emit currentDiffFileIndexChanged(fileIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -132,6 +132,7 @@ void UnifiedDiffEditorWidget::slotCursorPositionChangedInEditor()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
const GuardLocker locker(m_controller.m_ignoreChanges);
|
const GuardLocker locker(m_controller.m_ignoreChanges);
|
||||||
|
m_controller.setCurrentDiffFileIndex(fileIndex);
|
||||||
emit currentDiffFileIndexChanged(fileIndex);
|
emit currentDiffFileIndexChanged(fileIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -499,6 +500,7 @@ void UnifiedDiffEditorWidget::showDiff()
|
|||||||
setReadOnly(true);
|
setReadOnly(true);
|
||||||
}
|
}
|
||||||
setSelections(result.selections);
|
setSelections(result.selections);
|
||||||
|
setCurrentDiffFileIndex(m_controller.currentDiffFileIndex());
|
||||||
}
|
}
|
||||||
m_watcher.release()->deleteLater();
|
m_watcher.release()->deleteLater();
|
||||||
m_controller.setBusyShowing(false);
|
m_controller.setBusyShowing(false);
|
||||||
@@ -647,6 +649,7 @@ void UnifiedDiffEditorWidget::setCurrentDiffFileIndex(int diffFileIndex)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
const GuardLocker locker(m_controller.m_ignoreChanges);
|
const GuardLocker locker(m_controller.m_ignoreChanges);
|
||||||
|
m_controller.setCurrentDiffFileIndex(diffFileIndex);
|
||||||
const int blockNumber = blockNumberForFileIndex(diffFileIndex);
|
const int blockNumber = blockNumberForFileIndex(diffFileIndex);
|
||||||
|
|
||||||
QTextBlock block = document()->findBlockByNumber(blockNumber);
|
QTextBlock block = document()->findBlockByNumber(blockNumber);
|
||||||
|
Reference in New Issue
Block a user