Browse Source

Lazily create the selected/deselected lists.

pull/3470/head
Steven Kirk 6 years ago
parent
commit
b120e5282e
  1. 18
      src/Avalonia.Controls/SelectionModelChangeSet.cs

18
src/Avalonia.Controls/SelectionModelChangeSet.cs

@ -21,15 +21,13 @@ namespace Avalonia.Controls
CreateItems(x => x.SelectedRanges));
}
private IReadOnlyList<IndexPath> CreateIndices(Func<SelectionNodeOperation, List<IndexRange>?> selector)
private IEnumerable<IndexPath> CreateIndices(Func<SelectionNodeOperation, List<IndexRange>?> selector)
{
if (_changes == null)
{
return Array.Empty<IndexPath>();
yield break;
}
var result = new List<IndexPath>();
foreach (var i in _changes)
{
var ranges = selector(i);
@ -40,20 +38,18 @@ namespace Avalonia.Controls
{
for (var k = j.Begin; k <= j.End; ++k)
{
result.Add(i.Path.CloneWithChildIndex(k));
yield return i.Path.CloneWithChildIndex(k);
}
}
}
}
return result;
}
private IReadOnlyList<object> CreateItems(Func<SelectionNodeOperation, List<IndexRange>?> selector)
private IEnumerable<object> CreateItems(Func<SelectionNodeOperation, List<IndexRange>?> selector)
{
if (_changes == null)
{
return Array.Empty<object>();
yield break;
}
var result = new List<object>();
@ -68,13 +64,11 @@ namespace Avalonia.Controls
{
for (var k = j.Begin; k <= j.End; ++k)
{
result.Add(i.Items.GetAt(k));
yield return i.Items.GetAt(k);
}
}
}
}
return result;
}
}
}

Loading…
Cancel
Save