Skip to content

Commit 36b8472

Browse files
committed
enhance: improve selection changed event handler performance
1 parent 3197b4b commit 36b8472

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

src/ViewModels/BranchTreeNode.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class BranchTreeNode : ObservableObject
1616
public object Backend { get; private set; } = null;
1717
public int Depth { get; set; } = 0;
1818
public bool IsFiltered { get; set; } = false;
19+
public bool IsSelected { get; set; } = false;
1920
public List<BranchTreeNode> Children { get; private set; } = new List<BranchTreeNode>();
2021

2122
public bool IsExpanded

src/Views/BranchTree.axaml.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,21 +154,24 @@ private void OnNodesSelectionChanged(object sender, SelectionChangedEventArgs e)
154154
if (selected == null || selected.Count == 0)
155155
return;
156156

157-
var set = new HashSet<ViewModels.BranchTreeNode>();
158-
foreach (var item in selected)
157+
foreach (var item in e.AddedItems)
158+
{
159+
if (item is ViewModels.BranchTreeNode node)
160+
node.IsSelected = true;
161+
}
162+
163+
foreach (var item in e.RemovedItems)
159164
{
160165
if (item is ViewModels.BranchTreeNode node)
161-
set.Add(node);
166+
node.IsSelected = false;
162167
}
163168

164169
var prev = null as ViewModels.BranchTreeNode;
165-
var isPrevSelected = false;
166170
foreach (var row in Rows)
167171
{
168-
var isSelected = set.Contains(row);
169-
if (isSelected)
172+
if (row.IsSelected)
170173
{
171-
if (isPrevSelected)
174+
if (prev is { IsSelected: true })
172175
{
173176
var prevTop = prev.CornerRadius.TopLeft;
174177
prev.CornerRadius = new CornerRadius(prevTop, 0);
@@ -180,7 +183,6 @@ private void OnNodesSelectionChanged(object sender, SelectionChangedEventArgs e)
180183
}
181184
}
182185

183-
isPrevSelected = isSelected;
184186
prev = row;
185187
}
186188

0 commit comments

Comments
 (0)