From dcf24db75a2582b0b64a499397da4c1ad670b304 Mon Sep 17 00:00:00 2001 From: leo Date: Mon, 7 Jun 2021 20:09:59 +0800 Subject: [PATCH] fix: fix revision file tree missing issue due to Unloaded event will be called on active tab changed --- src/Views/Widgets/CommitChanges.xaml.cs | 10 +++++++++- src/Views/Widgets/CommitDetail.xaml.cs | 6 ++++++ src/Views/Widgets/RevisionFiles.xaml.cs | 5 ++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/Views/Widgets/CommitChanges.xaml.cs b/src/Views/Widgets/CommitChanges.xaml.cs index 10c464a5..5214f3ef 100644 --- a/src/Views/Widgets/CommitChanges.xaml.cs +++ b/src/Views/Widgets/CommitChanges.xaml.cs @@ -13,7 +13,7 @@ namespace SourceGit.Views.Widgets { /// public partial class CommitChanges : UserControl { private string repo = null; - private List range = null; + private List range = new List(); private List cachedChanges = new List(); 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(); + modeGrid.ItemsSource = new List(); + modeList.ItemsSource = new List(); + } + public void SetData(string repo, List range, List changes) { this.repo = repo; this.range = range; diff --git a/src/Views/Widgets/CommitDetail.xaml.cs b/src/Views/Widgets/CommitDetail.xaml.cs index 7d9385fe..c01de300 100644 --- a/src/Views/Widgets/CommitDetail.xaml.cs +++ b/src/Views/Widgets/CommitDetail.xaml.cs @@ -19,6 +19,12 @@ namespace SourceGit.Views.Widgets { public CommitDetail() { InitializeComponent(); + + Unloaded += (o, e) => { + changeList.ItemsSource = new List(); + changeContainer.CleanUp(); + revisionFiles.Cleanup(); + }; } public void SetData(string repo, Models.Commit commit) { diff --git a/src/Views/Widgets/RevisionFiles.xaml.cs b/src/Views/Widgets/RevisionFiles.xaml.cs index 95ddcb9d..7811a8d7 100644 --- a/src/Views/Widgets/RevisionFiles.xaml.cs +++ b/src/Views/Widgets/RevisionFiles.xaml.cs @@ -32,7 +32,6 @@ namespace SourceGit.Views.Widgets { public RevisionFiles() { InitializeComponent(); - Unloaded += (o, e) => treeFiles.ItemsSource = new List(); } 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(); + } + private void SortFileNodes(List nodes) { nodes.Sort((l, r) => { if (l.IsFolder == r.IsFolder) {