private void FillDiff()
{
DiffTabPage.Text = _diffTabPageTitleBase;
if (CommitInfoTabControl.SelectedTab != DiffTabPage)
{
return;
}
if (_selectedRevisionUpdatedTargets.HasFlag(UpdateTargets.DiffList))
return;
_selectedRevisionUpdatedTargets |= UpdateTargets.DiffList;
var revisions = RevisionGrid.GetSelectedRevisions();
DiffText.SaveCurrentScrollPos();
DiffFiles.SetDiffs(revisions);
if (_oldDiffItem != null && revisions.Count > 0 && revisions[0].Guid == _oldRevision)
{
DiffFiles.SelectedItem = _oldDiffItem;
_oldDiffItem = null;
_oldRevision = null;
}
switch (revisions.Count)
{
case 0:
DiffTabPage.Text = _diffNoSelection.Text;
break;
case 1: // diff "parent" --> "selected revision"
var revision = revisions[0];
if (revision != null && revision.ParentGuids != null && revision.ParentGuids.Length != 0)
DiffTabPage.Text = _diffParentWithSelection.Text;
break;
case 2: // diff "first clicked revision" --> "second clicked revision"
bool artificialRevSelected = revisions[0].IsArtificial() || revisions[1].IsArtificial();
if (!artificialRevSelected)
DiffTabPage.Text = _diffTwoSelected.Text;
break;
default: // more than 2 revisions selected => no diff
DiffTabPage.Text = _diffNotSupported.Text;
break;
}
}