diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Drawing/NodeControl.xaml.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Drawing/NodeControl.xaml.cs
index 993ef83f94..946d73eb0f 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Drawing/NodeControl.xaml.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Drawing/NodeControl.xaml.cs
@@ -67,7 +67,7 @@ namespace Debugger.AddIn.Visualizers.Graph.Drawing
var row = new RowDefinition();
propertyGrid.RowDefinitions.Add(row);
- if (!property.IsAtomic)
+ if (!property.IsAtomic && !property.IsNull)
{
Button btnExpandCollapse = new Button();
btnExpandCollapse.Tag = property;
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ExpandedNodes.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ExpandedNodes.cs
index 8f29e49dde..8dc6dbb28d 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ExpandedNodes.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ExpandedNodes.cs
@@ -25,12 +25,12 @@ namespace Debugger.AddIn.Visualizers.Graph
return expandedNodes.ContainsKey(expression) && (expandedNodes[expression] == true);
}
- public void Expand(string expression)
+ public void SetExpanded(string expression)
{
expandedNodes[expression] = true;
}
- public void Collapse(string expression)
+ public void SetCollapsed(string expression)
{
expandedNodes[expression] = false;
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Layout/PositionedNodeProperty.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Layout/PositionedNodeProperty.cs
index 85fc4ac103..596b4087e1 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Layout/PositionedNodeProperty.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Layout/PositionedNodeProperty.cs
@@ -67,5 +67,10 @@ namespace Debugger.AddIn.Visualizers.Graph.Layout
/// Is this property of atomic type? (int, string, etc.)
///
public bool IsAtomic { get { return this.objectProperty.IsAtomic; } }
+
+ ///
+ /// Is the value of this property null?
+ ///
+ public bool IsNull { get { return this.objectProperty.IsNull; } }
}
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Layout/Tree/NeatoProcess.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Layout/Tree/NeatoProcess.cs
index 78e7f0992e..481e54f704 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Layout/Tree/NeatoProcess.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/Layout/Tree/NeatoProcess.cs
@@ -73,10 +73,10 @@ namespace Debugger.AddIn.Visualizers.Graph.Layout
/// Same graph in Graphviz plain with position information added.
public string CalculatePositions(string dotGraph)
{
- using (var writer = new StreamWriter(@"D:\__prog__\Graphviz\logIn.gv"))
+ /*using (var writer = new StreamWriter("logIn.gv"))
{
writer.Write(dotGraph);
- }
+ }*/
neatoProcess.StandardInput.Write(dotGraph);
neatoProcess.StandardInput.Flush();
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectGraphBuilder.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectGraphBuilder.cs
index 2984c6db57..5daaabf17d 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectGraphBuilder.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectGraphBuilder.cs
@@ -136,7 +136,8 @@ namespace Debugger.AddIn.Visualizers.Graph
else
{
ObjectNode targetNode = null;
- if (!isNull(memberExpr) && expandedNodes.IsExpanded(memberExpr.Code))
+ bool memberIsNull = isNull(memberExpr);
+ if (!memberIsNull && expandedNodes.IsExpanded(memberExpr.Code))
{
// for object members, edges are added
Value memberValue = getPermanentReference(memberExpr);
@@ -153,7 +154,7 @@ namespace Debugger.AddIn.Visualizers.Graph
{
targetNode = null;
}
- thisNode.AddComplexProperty(memberName, "", memberExpr, targetNode);
+ thisNode.AddComplexProperty(memberName, "", memberExpr, targetNode, memberIsNull);
}
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectNode.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectNode.cs
index 71ed241064..61ecc65193 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectNode.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectNode.cs
@@ -103,10 +103,10 @@ namespace Debugger.AddIn.Visualizers.Graph
///
/// Adds complex property.
///
- internal void AddComplexProperty(string name, string value, Expression expression, ObjectNode targetNode)
+ internal void AddComplexProperty(string name, string value, Expression expression, ObjectNode targetNode, bool isNull)
{
properties.Add(new ObjectProperty
- { Name = name, Value = value, Expression = expression, IsAtomic = false, TargetNode = targetNode });
+ { Name = name, Value = value, Expression = expression, IsAtomic = false, TargetNode = targetNode, IsNull = isNull });
}
}
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectProperty.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectProperty.cs
index 52490e4235..b6416bf0e2 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectProperty.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/ObjectGraph/ObjectProperty.cs
@@ -30,14 +30,19 @@ namespace Debugger.AddIn.Visualizers.Graph
///
public Debugger.Expressions.Expression Expression { get; set; }
+ ///
+ /// Is this property of atomic type? (int, string, etc.)
+ ///
+ public bool IsAtomic { get; set; }
+
///
/// Node that this property points to. Can be null. Always null if is true.
///
public ObjectNode TargetNode { get; set; }
///
- /// Is this property of atomic type? (int, string, etc.)
+ /// Is this property value null? Only meaningful if is false.
///
- public bool IsAtomic { get; set; }
+ public bool IsNull { get; set; }
}
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/VisualizerWPFWindow.xaml.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/VisualizerWPFWindow.xaml.cs
index a8aea03512..08457c8a09 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/VisualizerWPFWindow.xaml.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/Graph/VisualizerWPFWindow.xaml.cs
@@ -146,13 +146,13 @@ namespace Debugger.AddIn.Visualizers.Graph
void node_Expanded(object sender, PositionedPropertyEventArgs e)
{
- expandedNodes.Expand(e.Property.Expression.Code);
+ expandedNodes.SetExpanded(e.Property.Expression.Code);
refreshGraph();
}
void node_Collapsed(object sender, PositionedPropertyEventArgs e)
{
- expandedNodes.Collapse(e.Property.Expression.Code);
+ expandedNodes.SetCollapsed(e.Property.Expression.Code);
refreshGraph();
}
}