Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Mac/MacObjectValueTreeView.cs5
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs10
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));
}