Improve navigation behavior

Prev/next at start/end of range now (re-)scrolls to first/last change-block
(I.e when unset, or already at first/last change-block, or at the only one.)
Current change-block is now unset in RefreshContent().
This commit is contained in:
goran-w 2024-11-15 13:43:05 +01:00
parent 392ab5061e
commit 2edf01db3b

View file

@ -78,9 +78,15 @@ namespace SourceGit.ViewModels
if (_content is Models.TextDiff textDiff) if (_content is Models.TextDiff textDiff)
{ {
if (textDiff.CurrentChangeBlockIdx > 0) if (textDiff.CurrentChangeBlockIdx > 0)
{
textDiff.CurrentChangeBlockIdx--; textDiff.CurrentChangeBlockIdx--;
else if (textDiff.CurrentChangeBlockIdx == -1 && textDiff.ChangeBlocks.Count > 0) }
textDiff.CurrentChangeBlockIdx = 0; // Jump to first change block else if (textDiff.ChangeBlocks.Count > 0)
{
// Force property value change and (re-)jump to first change block
textDiff.CurrentChangeBlockIdx = -1;
textDiff.CurrentChangeBlockIdx = 0;
}
} }
} }
@ -89,7 +95,15 @@ namespace SourceGit.ViewModels
if (_content is Models.TextDiff textDiff) if (_content is Models.TextDiff textDiff)
{ {
if (textDiff.CurrentChangeBlockIdx < textDiff.ChangeBlocks.Count - 1) if (textDiff.CurrentChangeBlockIdx < textDiff.ChangeBlocks.Count - 1)
{
textDiff.CurrentChangeBlockIdx++; textDiff.CurrentChangeBlockIdx++;
}
else if (textDiff.ChangeBlocks.Count > 0)
{
// Force property value change and (re-)jump to last change block
textDiff.CurrentChangeBlockIdx = -1;
textDiff.CurrentChangeBlockIdx = textDiff.ChangeBlocks.Count - 1;
}
} }
} }