diff options
author | Jeffrey Stedfast <jestedfa@microsoft.com> | 2019-06-14 21:51:59 +0300 |
---|---|---|
committer | Jeffrey Stedfast <jestedfa@microsoft.com> | 2019-06-14 21:51:59 +0300 |
commit | 387e6356907b181236264b783a2743941bcf486d (patch) | |
tree | 9e5c907c93c7725a957b20d84712a73119f3eef7 /main/src | |
parent | 749e67151543478b75d53c9135dc4f5a6de124d7 (diff) |
[Debugger] Did the initial port of pinned watches over to ObjectValueTreeViewController
Diffstat (limited to 'main/src')
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); } |