Skip to content
This repository was archived by the owner on Oct 4, 2021. It is now read-only.

Commit 0ada790

Browse files
authored
Merge pull request #9295 from mono/backport-pr-9290-to-release-8.4
[release-8.4] [Debugger] Add more Begin/End Updates around tree manipulation
2 parents 1fc7452 + 711ea2c commit 0ada790

File tree

4 files changed

+24
-8
lines changed

4 files changed

+24
-8
lines changed

main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,13 @@ void ReloadValues ()
7777
DebuggerLoggingService.LogMessage ("End Local Variables");
7878

7979
if (UseNewTreeView) {
80-
controller.ClearValues ();
81-
controller.AddValues (locals);
82-
80+
_treeview.BeginUpdates ();
81+
try {
82+
controller.ClearValues ();
83+
controller.AddValues (locals);
84+
} finally {
85+
_treeview.EndUpdates ();
86+
}
8387
#if ADD_FAKE_NODES
8488
AddFakeNodes ();
8589
#endif

main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Mac/MacObjectValueTreeViewDataSource.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,10 +255,14 @@ public void Clear ()
255255
var range = new NSRange (0, count);
256256
var indexes = NSIndexSet.FromNSRange (range);
257257

258+
treeView.BeginUpdates ();
259+
258260
treeView.RemoveItems (indexes, null, NSTableViewAnimation.None);
259261

260262
for (int i = 0; i < removed.Count; i++)
261263
removed[i].Dispose ();
264+
265+
treeView.EndUpdates ();
262266
}
263267

264268
public void Append (ObjectValueNode node)

main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValuePad.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ public class ObjectValuePad : PadContent
4444

4545
protected ObjectValueTreeViewController controller;
4646
protected ObjectValueTreeView tree;
47+
// this is for the new treeview
48+
protected MacObjectValueTreeView _treeview;
4749

4850
readonly Control control;
4951
PadFontChanger fontChanger;
@@ -69,6 +71,7 @@ public ObjectValuePad (bool allowWatchExpressions = false)
6971
if (Platform.IsMac) {
7072
LoggingService.LogInfo ("Using MacObjectValueTreeView for {0}", allowWatchExpressions ? "Watch Pad" : "Locals Pad");
7173
var treeView = controller.GetMacControl ();
74+
_treeview = treeView;
7275

7376
fontChanger = new PadFontChanger (treeView, treeView.SetCustomFont, treeView.QueueResize);
7477

main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/WatchPad.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,16 @@ void RestoreExpressions ()
8989
controller.ExpressionAdded -= OnExpressionAdded;
9090

9191
try {
92-
// remove the expressions because we're going to rebuild them
93-
controller.ClearAll ();
94-
95-
// re-add the expressions which will reevaluate the expressions and repopulate the treeview
96-
controller.AddExpressions (expressions);
92+
_treeview.BeginUpdates ();
93+
try {
94+
// remove the expressions because we're going to rebuild them
95+
controller.ClearAll ();
96+
97+
// re-add the expressions which will reevaluate the expressions and repopulate the treeview
98+
controller.AddExpressions (expressions);
99+
} finally {
100+
_treeview.EndUpdates ();
101+
}
97102
} finally {
98103
controller.ExpressionAdded += OnExpressionAdded;
99104
}

0 commit comments

Comments
 (0)