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:
authorJeffrey Stedfast <jestedfa@microsoft.com>2019-06-14 21:51:59 +0300
committerJeffrey Stedfast <jestedfa@microsoft.com>2019-06-14 21:51:59 +0300
commit387e6356907b181236264b783a2743941bcf486d (patch)
tree9e5c907c93c7725a957b20d84712a73119f3eef7
parent749e67151543478b75d53c9135dc4f5a6de124d7 (diff)
[Debugger] Did the initial port of pinned watches over to ObjectValueTreeViewController
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/GtkObjectValueTreeView.cs83
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeViewController.cs11
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/WatchPad.cs1
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs108
4 files changed, 97 insertions, 106 deletions
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/GtkObjectValueTreeView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/GtkObjectValueTreeView.cs
index 1d5f0a8e03..2fd457f9fd 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/GtkObjectValueTreeView.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/GtkObjectValueTreeView.cs
@@ -438,10 +438,10 @@ public StackFrame Frame {
AppendNodeToTreeModel (iter, null, new ShowMoreValuesObjectValueNode (node));
}
}
+ }
- if (controller.CompactView) {
- RecalculateWidth ();
- }
+ if (controller.CompactView) {
+ RecalculateWidth ();
}
}
@@ -573,67 +573,6 @@ public StackFrame Frame {
restoringState = false;
}
- public void AddValue (ObjectValue value)
- {
- values.Add (value);
- Refresh (false);
- if (controller.CompactView)
- RecalculateWidth ();
- }
-
- public void AddValues (IEnumerable<ObjectValue> newValues)
- {
- foreach (var val in newValues)
- values.Add (val);
- Refresh (false);
- if (controller.CompactView)
- RecalculateWidth ();
- }
-
- public void RemoveValue (ObjectValue value)
- {
- values.Remove (value);
- Refresh (true);
- if (controller.CompactView)
- RecalculateWidth ();
- }
-
- public void ReplaceValue (ObjectValue old, ObjectValue @new)
- {
- int idx = values.IndexOf (old);
- if (idx == -1)
- return;
-
- values [idx] = @new;
- Refresh (false);
- if (controller.CompactView)
- RecalculateWidth ();
- }
-
- public void ClearAll ()
- {
- values.Clear ();
- //cachedValues.Clear ();
- frame = null;
- Refresh (true);
- }
-
- public void ClearValues ()
- {
- values.Clear ();
- Refresh (true);
- }
-
- //public void ClearExpressions ()
- //{
- // expressions.Clear ();
- // Update ();
- //}
-
- //public IEnumerable<string> Expressions {
- // get { return expressions; }
- //}
-
public void Update ()
{
//cachedValues.Clear ();
@@ -896,10 +835,14 @@ public StackFrame Frame {
protected override void OnRowExpanded (TreeIter iter, TreePath path)
{
var node = GetNodeAtIter (iter);
+
base.OnRowExpanded (iter, path);
+ if (controller.CompactView)
+ RecalculateWidth ();
+
HideValueButton (iter);
- this.controller.ExpandNodeAsync (node, cancellationTokenSource.Token).Ignore();
+ controller.ExpandNodeAsync (node, cancellationTokenSource.Token).Ignore();
}
protected override void OnRowCollapsed (TreeIter iter, TreePath path)
@@ -1576,7 +1519,7 @@ public StackFrame Frame {
{
base.OnRowActivated (path, column);
- if (!this.controller.CanQueryDebugger)
+ if (!controller.CanQueryDebugger)
return;
TreePath [] selected = Selection.GetSelectedRows ();
@@ -1599,7 +1542,7 @@ public StackFrame Frame {
if (GetPathAtPos (x, y, out path, out col)) {
var cellArea = GetCellArea (path, col);
x -= cellArea.X;
- foreach (CellRenderer cr in col.CellRenderers) {
+ foreach (var cr in col.CellRenderers) {
int xo, w;
col.CellGetPosition (cr, out xo, out w);
var visible = cr.Visible;
@@ -1628,7 +1571,7 @@ public StackFrame Frame {
string GetFullExpression (TreeIter it)
{
- TreePath path = store.GetPath (it);
+ var path = store.GetPath (it);
string name, expression = "";
while (path.Depth != 1) {
@@ -1894,9 +1837,9 @@ public StackFrame Frame {
void RecalculateWidth ()
{
- TreeIter iter;
- if (!this.Model.GetIterFirst (out iter))
+ if (!Model.GetIterFirst (out TreeIter iter))
return;
+
foreach (var column in new [] { expCol, valueCol }) {//No need to calculate for Type and PinIcon columns
// +1 is here because apperently when we calculate MaxWidth and set to FixedWidth
// later GTK when cacluate needed width for Label it doesn't have enough space
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeViewController.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeViewController.cs
index 885775d12f..1896c36d7a 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeViewController.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeViewController.cs
@@ -359,8 +359,10 @@ namespace MonoDevelop.Debugger
if (!AllowWatchExpressions)
return;
- var nodes = Frame.EvaluateExpressions (expressions);
- AddValues (nodes);
+ if (Frame != null) {
+ var nodes = Frame.EvaluateExpressions (expressions);
+ AddValues (nodes);
+ }
}
public bool EditExpression(IObjectValueNode node, string newExpression)
@@ -810,6 +812,11 @@ namespace MonoDevelop.Debugger
return (controller.Frame as ProxyStackFrame)?.StackFrame;
}
+ public static void AddValue (this ObjectValueTreeViewController controller, ObjectValue value)
+ {
+ controller.AddValue (new ObjectValueNode (value));
+ }
+
public static void AddValues (this ObjectValueTreeViewController controller, IEnumerable<ObjectValue> values)
{
controller.AddValues (values.Select (value => new ObjectValueNode (value)));
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/WatchPad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/WatchPad.cs
index 132283bbe8..b8e1bf6884 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/WatchPad.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/WatchPad.cs
@@ -120,7 +120,6 @@ namespace MonoDevelop.Debugger
if (UseNewTreeView) {
expressions.Clear ();
expressions.AddRange (controller.GetExpressions ());
-
}
base.OnDebuggerResumed (s, a);
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs
index 1c2d9779d2..b65c3d738f 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs
@@ -34,9 +34,15 @@ namespace MonoDevelop.SourceEditor
{
class PinnedWatchWidget : EventBox
{
+ static bool UseNewTreeView = true;
+
+ readonly ObjectValueTreeViewController controller;
+ readonly TreeView treeView;
+
readonly ObjectValueTreeView valueTree;
- ScrolledWindow sw;
+
ObjectValue objectValue;
+ ScrolledWindow sw;
MonoTextEditor Editor {
get; set;
@@ -54,12 +60,19 @@ namespace MonoDevelop.SourceEditor
if (objectValue == value)
return;
- if (objectValue != null && value != null) {
- valueTree.ReplaceValue (objectValue, value);
- } else {
- valueTree.ClearValues ();
+ if (UseNewTreeView) {
+ controller.ClearAll ();
+
if (value != null)
- valueTree.AddValue (value);
+ controller.AddValue (value);
+ } else {
+ if (objectValue != null && value != null) {
+ valueTree.ReplaceValue (objectValue, value);
+ } else {
+ valueTree.ClearValues ();
+ if (value != null)
+ valueTree.AddValue (value);
+ }
}
objectValue = value;
@@ -72,27 +85,45 @@ namespace MonoDevelop.SourceEditor
Editor = editor;
Watch = watch;
- valueTree = new ObjectValueTreeView ();
- valueTree.AllowAdding = false;
- valueTree.AllowEditing = true;
- valueTree.AllowPinning = true;
- valueTree.HeadersVisible = false;
- valueTree.CompactView = true;
- valueTree.PinnedWatch = watch;
- if (objectValue != null)
- valueTree.AddValue (objectValue);
+ if (UseNewTreeView) {
+ controller = new ObjectValueTreeViewController ();
+ controller.HeadersVisible = false;
+ controller.AllowEditing = true;
+ controller.AllowPinning = true;
+ controller.CompactView = true;
+ controller.PinnedWatch = watch;
+
+ treeView = (TreeView) controller.GetControl ();
+ valueTree = null;
+
+ if (objectValue != null)
+ controller.AddValue (objectValue);
+ } else {
+ valueTree = new ObjectValueTreeView ();
+ valueTree.AllowAdding = false;
+ valueTree.AllowEditing = true;
+ valueTree.AllowPinning = true;
+ valueTree.HeadersVisible = false;
+ valueTree.CompactView = true;
+ valueTree.PinnedWatch = watch;
+ if (objectValue != null)
+ valueTree.AddValue (objectValue);
+
+ treeView = valueTree;
+ controller = null;
+ }
- valueTree.ButtonPressEvent += HandleValueTreeButtonPressEvent;
- valueTree.ButtonReleaseEvent += HandleValueTreeButtonReleaseEvent;
- valueTree.MotionNotifyEvent += HandleValueTreeMotionNotifyEvent;
- valueTree.SizeAllocated += OnTreeSizeChanged;
+ treeView.ButtonPressEvent += HandleValueTreeButtonPressEvent;
+ treeView.ButtonReleaseEvent += HandleValueTreeButtonReleaseEvent;
+ treeView.MotionNotifyEvent += HandleValueTreeMotionNotifyEvent;
+ treeView.SizeAllocated += OnTreeSizeChanged;
sw = new ScrolledWindow ();
sw.HscrollbarPolicy = PolicyType.Never;
sw.VscrollbarPolicy = PolicyType.Never;
- sw.Add (valueTree);
+ sw.Add (treeView);
- Frame fr = new Frame ();
+ var fr = new Frame ();
fr.ShadowType = ShadowType.Out;
fr.Add (sw);
Add (fr);
@@ -106,7 +137,7 @@ namespace MonoDevelop.SourceEditor
void OnTreeSizeChanged (object s, SizeAllocatedArgs a)
{
const int maxHeight = 240;
- var treeHeight = valueTree.SizeRequest ().Height;
+ var treeHeight = treeView.SizeRequest ().Height;
if (treeHeight > maxHeight && sw.VscrollbarPolicy == PolicyType.Never) {
sw.VscrollbarPolicy = PolicyType.Always;
sw.HeightRequest = maxHeight;
@@ -120,15 +151,26 @@ namespace MonoDevelop.SourceEditor
void HandleDebuggingServiceResumedEvent (object sender, EventArgs e)
{
- valueTree.ChangeCheckpoint ();
- valueTree.AllowEditing = false;
- valueTree.AllowExpanding = false;
+ if (UseNewTreeView) {
+ controller.ChangeCheckpoint ();
+ controller.AllowExpanding = false;
+ controller.AllowEditing = false;
+ } else {
+ valueTree.ChangeCheckpoint ();
+ valueTree.AllowEditing = false;
+ valueTree.AllowExpanding = false;
+ }
}
void HandleDebuggingServicePausedEvent (object sender, EventArgs e)
{
- valueTree.AllowExpanding = true;
- valueTree.AllowEditing = true;
+ if (UseNewTreeView) {
+ controller.AllowExpanding = true;
+ controller.AllowEditing = true;
+ } else {
+ valueTree.AllowExpanding = true;
+ valueTree.AllowEditing = true;
+ }
}
protected override void OnDestroyed ()
@@ -137,10 +179,10 @@ namespace MonoDevelop.SourceEditor
DebuggingService.PausedEvent -= HandleDebuggingServicePausedEvent;
DebuggingService.ResumedEvent -= HandleDebuggingServiceResumedEvent;
- valueTree.ButtonPressEvent -= HandleValueTreeButtonPressEvent;
- valueTree.ButtonReleaseEvent -= HandleValueTreeButtonReleaseEvent;
- valueTree.MotionNotifyEvent -= HandleValueTreeMotionNotifyEvent;
- valueTree.SizeAllocated -= OnTreeSizeChanged;
+ treeView.ButtonPressEvent -= HandleValueTreeButtonPressEvent;
+ treeView.ButtonReleaseEvent -= HandleValueTreeButtonReleaseEvent;
+ treeView.MotionNotifyEvent -= HandleValueTreeMotionNotifyEvent;
+ treeView.SizeAllocated -= OnTreeSizeChanged;
}
@@ -157,9 +199,9 @@ namespace MonoDevelop.SourceEditor
TreePath path;
TreeViewColumn col;
int cx, cy;
- valueTree.GetPathAtPos ((int)args.Event.X, (int)args.Event.Y, out path, out col, out cx, out cy);
+ treeView.GetPathAtPos ((int)args.Event.X, (int)args.Event.Y, out path, out col, out cx, out cy);
//Gdk.Rectangle rect = valueTree.GetCellArea (path, col);
- if (!mousePressed && valueTree.Columns[0] == col) {
+ if (!mousePressed && treeView.Columns[0] == col) {
mousePressed = true;
Editor.TextArea.MoveToTop (this);
}