fix<RevisionFiles>: fix revision file tree missing issue due to Unloaded event will be called on active tab changed

This commit is contained in:
leo 2021-06-07 20:09:59 +08:00
parent 8db90574bb
commit dcf24db75a
3 changed files with 19 additions and 2 deletions

View file

@ -13,7 +13,7 @@ namespace SourceGit.Views.Widgets {
/// </summary>
public partial class CommitChanges : UserControl {
private string repo = null;
private List<Models.Commit> range = null;
private List<Models.Commit> range = new List<Models.Commit>();
private List<Models.Change> cachedChanges = new List<Models.Change>();
private string filter = null;
private bool isSelecting = false;
@ -31,6 +31,14 @@ namespace SourceGit.Views.Widgets {
InitializeComponent();
}
public void CleanUp() {
range.Clear();
cachedChanges.Clear();
modeTree.ItemsSource = new List<ChangeNode>();
modeGrid.ItemsSource = new List<Models.Change>();
modeList.ItemsSource = new List<Models.Change>();
}
public void SetData(string repo, List<Models.Commit> range, List<Models.Change> changes) {
this.repo = repo;
this.range = range;

View file

@ -19,6 +19,12 @@ namespace SourceGit.Views.Widgets {
public CommitDetail() {
InitializeComponent();
Unloaded += (o, e) => {
changeList.ItemsSource = new List<Models.Change>();
changeContainer.CleanUp();
revisionFiles.Cleanup();
};
}
public void SetData(string repo, Models.Commit commit) {

View file

@ -32,7 +32,6 @@ namespace SourceGit.Views.Widgets {
public RevisionFiles() {
InitializeComponent();
Unloaded += (o, e) => treeFiles.ItemsSource = new List<FileNode>();
}
public void SetData(string repo, string sha, Commands.Context cancelToken) {
@ -109,6 +108,10 @@ namespace SourceGit.Views.Widgets {
});
}
public void Cleanup() {
treeFiles.ItemsSource = new List<FileNode>();
}
private void SortFileNodes(List<FileNode> nodes) {
nodes.Sort((l, r) => {
if (l.IsFolder == r.IsFolder) {