Browse Source

Move SynchronizeItems to TreeView.

As it's no longer used in `SelectingItemsControl`.
pull/2673/head
Steven Kirk 7 years ago
parent
commit
1066f57c9e
  1. 22
      src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
  2. 26
      src/Avalonia.Controls/TreeView.cs

22
src/Avalonia.Controls/Primitives/SelectingItemsControl.cs

@ -648,28 +648,6 @@ namespace Avalonia.Controls.Primitives
return false;
}
/// <summary>
/// Makes a list of objects equal another (though doesn't preserve order).
/// </summary>
/// <param name="items">The items collection.</param>
/// <param name="desired">The desired items.</param>
internal static void SynchronizeItems(IList items, IEnumerable<object> desired)
{
var list = items.Cast<object>().ToList();
var toRemove = list.Except(desired).ToList();
var toAdd = desired.Except(list).ToList();
foreach(var i in toRemove)
{
items.Remove(i);
}
foreach (var i in toAdd)
{
items.Add(i);
}
}
/// <summary>
/// Gets a range of items from an IEnumerable.
/// </summary>

26
src/Avalonia.Controls/TreeView.cs

@ -409,7 +409,7 @@ namespace Avalonia.Controls
if (this.SelectionMode == SelectionMode.Multiple && Match(keymap.SelectAll))
{
SelectingItemsControl.SynchronizeItems(SelectedItems, ItemContainerGenerator.Index.Items);
SynchronizeItems(SelectedItems, ItemContainerGenerator.Index.Items);
e.Handled = true;
}
}
@ -521,7 +521,7 @@ namespace Avalonia.Controls
}
else if (multi && range)
{
SelectingItemsControl.SynchronizeItems(
SynchronizeItems(
SelectedItems,
GetItemsInRange(selectedContainer as TreeViewItem, container as TreeViewItem));
}
@ -778,5 +778,27 @@ namespace Avalonia.Controls
container.Classes.Set(":selected", selected);
}
}
/// <summary>
/// Makes a list of objects equal another (though doesn't preserve order).
/// </summary>
/// <param name="items">The items collection.</param>
/// <param name="desired">The desired items.</param>
private static void SynchronizeItems(IList items, IEnumerable<object> desired)
{
var list = items.Cast<object>().ToList();
var toRemove = list.Except(desired).ToList();
var toAdd = desired.Except(list).ToList();
foreach (var i in toRemove)
{
items.Remove(i);
}
foreach (var i in toAdd)
{
items.Add(i);
}
}
}
}

Loading…
Cancel
Save