|
|
@ -46,9 +46,9 @@ namespace GitUI.CommandsDialogs |
|
|
|
private readonly RememberFileContextMenuController _rememberFileContextMenuController |
|
|
|
= RememberFileContextMenuController.Default; |
|
|
|
private Action? _refreshGitStatus; |
|
|
|
private FileStatusItem? _selectedBlameItem; |
|
|
|
private GitItemStatus? _selectedBlameItem; |
|
|
|
private string? _fallbackFollowedFile; |
|
|
|
private FileStatusItem? _lastExplicitlySelectedItem; |
|
|
|
private RelativePath? _lastExplicitlySelectedItem; |
|
|
|
private bool _isImplicitListSelection = false; |
|
|
|
|
|
|
|
public RevisionDiffControl() |
|
|
@ -310,7 +310,7 @@ namespace GitUI.CommandsDialogs |
|
|
|
|
|
|
|
// First try the last item explicitly selected
|
|
|
|
if (_lastExplicitlySelectedItem is not null |
|
|
|
&& firstGroupItems.FirstOrDefault(i => i.Item.Name.Equals(_lastExplicitlySelectedItem.Item.Name))?.Item is GitItemStatus explicitItem) |
|
|
|
&& firstGroupItems.FirstOrDefault(i => i.Item.Name.Equals(_lastExplicitlySelectedItem.Value))?.Item is GitItemStatus explicitItem) |
|
|
|
{ |
|
|
|
DiffFiles.SelectedGitItem = explicitItem; |
|
|
|
return; |
|
|
@ -628,17 +628,17 @@ namespace GitUI.CommandsDialogs |
|
|
|
private void DiffFiles_SelectedIndexChanged(object sender, EventArgs e) |
|
|
|
{ |
|
|
|
// Switch to diff if the selection changes
|
|
|
|
FileStatusItem? item = DiffFiles.SelectedItem; |
|
|
|
if (item is not null && blameToolStripMenuItem.Checked && item.Item.Name != _selectedBlameItem?.Item.Name) |
|
|
|
GitItemStatus? item = DiffFiles.SelectedGitItem; |
|
|
|
if (item is not null && blameToolStripMenuItem.Checked && item.Name != _selectedBlameItem?.Name) |
|
|
|
{ |
|
|
|
blameToolStripMenuItem.Checked = false; |
|
|
|
} |
|
|
|
|
|
|
|
// If this is not occurring after a revision change (implicit selection)
|
|
|
|
// save the selected item so it can be the "preferred" selection
|
|
|
|
if (!_isImplicitListSelection && item is not null && !item.Item.IsRangeDiff) |
|
|
|
if (!_isImplicitListSelection && item is not null && !item.IsRangeDiff) |
|
|
|
{ |
|
|
|
_lastExplicitlySelectedItem = item; |
|
|
|
_lastExplicitlySelectedItem = RelativePath.From(item.Name); |
|
|
|
_selectedBlameItem = null; |
|
|
|
} |
|
|
|
|
|
|
@ -785,7 +785,7 @@ namespace GitUI.CommandsDialogs |
|
|
|
{ |
|
|
|
int? line = DiffText.Visible ? DiffText.CurrentFileLine : BlameControl.CurrentFileLine; |
|
|
|
blameToolStripMenuItem.Checked = !blameToolStripMenuItem.Checked; |
|
|
|
_selectedBlameItem = blameToolStripMenuItem.Checked ? DiffFiles.SelectedItem : null; |
|
|
|
_selectedBlameItem = blameToolStripMenuItem.Checked ? DiffFiles.SelectedItem.Item : null; |
|
|
|
ShowSelectedFile(ensureNoSwitchToFilter: true, line); |
|
|
|
return; |
|
|
|
} |
|
|
|