diff options
2 files changed, 13 insertions, 2 deletions
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Mac/MacObjectValueTreeView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Mac/MacObjectValueTreeView.cs index 42504aa22a..f0e8816a96 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Mac/MacObjectValueTreeView.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Mac/MacObjectValueTreeView.cs @@ -828,6 +828,11 @@ namespace MonoDevelop.Debugger foreach (var row in selectedRows) { var item = (MacObjectValueNode) ItemAtRow ((nint) row); + // The user is only allowed to delete top-level nodes. It doesn't make sense to allow + // deleting child nodes of anything else. + if (!(item.Target.Parent is RootObjectValueNode)) + continue; + nodesToDelete.Add (item.Target); } diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs index 30801ce85c..13ebca43b2 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs @@ -299,12 +299,18 @@ namespace MonoDevelop.Debugger void RemoveValue (ObjectValueNode node) { var toplevel = node.Parent is RootObjectValueNode; - int index = node.Parent.Children.IndexOf (node); + int index; + + if (node.Parent != null) { + index = node.Parent.Children.IndexOf (node); + } else { + index = -1; + } UnregisterNode (node); OnEvaluationCompleted (node, new ObjectValueNode[0]); - if (AllowWatchExpressions && toplevel) + if (AllowWatchExpressions && toplevel && index != -1) ExpressionRemoved?.Invoke (this, new ExpressionRemovedEventArgs (index, node.Name)); } |