diff --git a/EliteBGS/MainWindow.xaml.cs b/EliteBGS/MainWindow.xaml.cs index cec6b9e..a9b82c8 100644 --- a/EliteBGS/MainWindow.xaml.cs +++ b/EliteBGS/MainWindow.xaml.cs @@ -271,15 +271,27 @@ public partial class MainWindow : MetroWindow { object obj = entries.SelectedItem; bool removed = false; - if (obj.GetType() == typeof(Objective)) { - removed = report.Objectives.Remove(obj as Objective); + if (obj.GetType() == typeof(SystemObjectives)) { + removed = report.SystemObjectives.Remove(obj as SystemObjectives); + } else if (obj.GetType() == typeof(Objective)) { + report + .SystemObjectives + .ForEach(x => { + if (x.Objectives.Remove(obj as Objective)) { + removed = true; + } + }); } else if (obj.GetType() == typeof(UITransaction) || - obj.GetType().IsSubclassOf(typeof(UITransaction))) { - foreach (Objective parent in report.Objectives) { - if (parent.UITransactions.Remove(obj as UITransaction)) { - removed = true; - } - } + obj.GetType().IsSubclassOf(typeof(UITransaction))) { + report + .SystemObjectives + .SelectMany(x => + x.Objectives + .Where(x => x.UITransactions.Contains(obj as UITransaction)) + ) + .ToList() + .ForEach(x => removed = x.UITransactions.Remove(obj as UITransaction)) + ; } if (removed) {