diff --git a/sandbox/BlazorApp/BlazorApp.csproj b/sandbox/BlazorApp/BlazorApp.csproj
index e5eafff..74041af 100644
--- a/sandbox/BlazorApp/BlazorApp.csproj
+++ b/sandbox/BlazorApp/BlazorApp.csproj
@@ -1,11 +1,12 @@
-
- net6.0
-
+
+ net6.0
+ enable
+
-
-
-
+
+
+
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ISynchronizedViewFilter.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ISynchronizedViewFilter.cs
index 186eb1d..a33b6f4 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ISynchronizedViewFilter.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ISynchronizedViewFilter.cs
@@ -7,7 +7,7 @@ namespace ObservableCollections
bool IsMatch(T value, TView view);
void WhenTrue(T value, TView view);
void WhenFalse(T value, TView view);
- void OnCollectionChanged(ChangedKind changedKind, T value, TView view);
+ void OnCollectionChanged(ChangedKind changedKind, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs);
}
public enum ChangedKind
@@ -35,14 +35,14 @@ namespace ObservableCollections
public bool IsMatch(T value, TView view) => isMatch(value, view);
public void WhenFalse(T value, TView view) => whenFalse?.Invoke(value, view);
public void WhenTrue(T value, TView view) => whenTrue?.Invoke(value, view);
- public void OnCollectionChanged(ChangedKind changedKind, T value, TView view) => onCollectionChanged?.Invoke(changedKind, value, view);
+ public void OnCollectionChanged(ChangedKind changedKind, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs) => onCollectionChanged?.Invoke(changedKind, value, view);
class NullViewFilter : ISynchronizedViewFilter
{
public bool IsMatch(T value, TView view) => true;
public void WhenFalse(T value, TView view) { }
public void WhenTrue(T value, TView view) { }
- public void OnCollectionChanged(ChangedKind changedKind, T value, TView view) { }
+ public void OnCollectionChanged(ChangedKind changedKind, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs) { }
}
}
@@ -68,12 +68,12 @@ namespace ObservableCollections
return filter == SynchronizedViewFilter.Null;
}
- internal static void InvokeOnAdd(this ISynchronizedViewFilter filter, (T value, TView view) value)
+ internal static void InvokeOnAdd(this ISynchronizedViewFilter filter, (T value, TView view) value, in NotifyCollectionChangedEventArgs eventArgs)
{
- InvokeOnAdd(filter, value.value, value.view);
+ InvokeOnAdd(filter, value.value, value.view, eventArgs);
}
- internal static void InvokeOnAdd(this ISynchronizedViewFilter filter, T value, TView view)
+ internal static void InvokeOnAdd(this ISynchronizedViewFilter filter, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs)
{
if (filter.IsMatch(value, view))
{
@@ -83,27 +83,27 @@ namespace ObservableCollections
{
filter.WhenFalse(value, view);
}
- filter.OnCollectionChanged(ChangedKind.Add, value, view);
+ filter.OnCollectionChanged(ChangedKind.Add, value, view, eventArgs);
}
- internal static void InvokeOnRemove(this ISynchronizedViewFilter filter, (T value, TView view) value)
+ internal static void InvokeOnRemove(this ISynchronizedViewFilter filter, (T value, TView view) value, in NotifyCollectionChangedEventArgs eventArgs)
{
- InvokeOnRemove(filter, value.value, value.view);
+ InvokeOnRemove(filter, value.value, value.view, eventArgs);
}
- internal static void InvokeOnRemove(this ISynchronizedViewFilter filter, T value, TView view)
+ internal static void InvokeOnRemove(this ISynchronizedViewFilter filter, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs)
{
- filter.OnCollectionChanged(ChangedKind.Remove, value, view);
+ filter.OnCollectionChanged(ChangedKind.Remove, value, view, eventArgs);
}
- internal static void InvokeOnMove(this ISynchronizedViewFilter filter, (T value, TView view) value)
+ internal static void InvokeOnMove(this ISynchronizedViewFilter filter, (T value, TView view) value, in NotifyCollectionChangedEventArgs eventArgs)
{
- InvokeOnMove(filter, value.value, value.view);
+ InvokeOnMove(filter, value.value, value.view, eventArgs);
}
- internal static void InvokeOnMove(this ISynchronizedViewFilter filter, T value, TView view)
+ internal static void InvokeOnMove(this ISynchronizedViewFilter filter, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs)
{
- filter.OnCollectionChanged(ChangedKind.Move, value, view);
+ filter.OnCollectionChanged(ChangedKind.Move, value, view, eventArgs);
}
internal static void InvokeOnAttach(this ISynchronizedViewFilter filter, T value, TView view)
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/CloneCollection.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/CloneCollection.cs
index 43bd988..0c830f6 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/CloneCollection.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/CloneCollection.cs
@@ -3,6 +3,7 @@ using System.Buffers;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
+using System.Linq;
namespace ObservableCollections.Internal
{
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/SortedView.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/SortedView.cs
index d0ca75c..43b8a98 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/SortedView.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/SortedView.cs
@@ -122,7 +122,7 @@ namespace ObservableCollections.Internal
var view = transform(value);
var id = identitySelector(value);
dict.Add((value, id), (value, view));
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnAdd(value, view, e);
}
else
{
@@ -131,7 +131,7 @@ namespace ObservableCollections.Internal
var view = transform(value);
var id = identitySelector(value);
dict.Add((value, id), (value, view));
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnAdd(value, view, e);
}
}
}
@@ -143,7 +143,7 @@ namespace ObservableCollections.Internal
var value = e.OldItem;
var id = identitySelector(value);
dict.Remove((value, id), out var v);
- filter.InvokeOnRemove(v.Value, v.View);
+ filter.InvokeOnRemove(v.Value, v.View, e);
}
else
{
@@ -151,7 +151,7 @@ namespace ObservableCollections.Internal
{
var id = identitySelector(value);
dict.Remove((value, id), out var v);
- filter.InvokeOnRemove(v.Value, v.View);
+ filter.InvokeOnRemove(v.Value, v.View, e);
}
}
}
@@ -168,8 +168,8 @@ namespace ObservableCollections.Internal
var id = identitySelector(value);
dict.Add((value, id), (value, view));
- filter.InvokeOnRemove(oldView);
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnRemove(oldView, e);
+ filter.InvokeOnAdd(value, view, e);
}
break;
case NotifyCollectionChangedAction.Move:
@@ -178,7 +178,7 @@ namespace ObservableCollections.Internal
var oldValue = e.OldItem;
if (dict.TryGetValue((oldValue, identitySelector(oldValue)), out var view))
{
- filter.InvokeOnMove(view);
+ filter.InvokeOnMove(view, e);
}
}
break;
@@ -187,7 +187,7 @@ namespace ObservableCollections.Internal
{
foreach (var item in dict)
{
- filter.InvokeOnRemove(item.Value);
+ filter.InvokeOnRemove(item.Value, e);
}
}
dict.Clear();
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/SortedViewViewComparer.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/SortedViewViewComparer.cs
index c543490..35b75cd 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/SortedViewViewComparer.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/Internal/SortedViewViewComparer.cs
@@ -128,7 +128,7 @@ namespace ObservableCollections.Internal
var id = identitySelector(value);
dict.Add((view, id), (value, view));
viewMap.Add(id, view);
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnAdd(value, view, e);
}
else
{
@@ -138,7 +138,7 @@ namespace ObservableCollections.Internal
var id = identitySelector(value);
dict.Add((view, id), (value, view));
viewMap.Add(id, view);
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnAdd(value, view, e);
}
}
}
@@ -152,7 +152,7 @@ namespace ObservableCollections.Internal
if (viewMap.Remove(id, out var view))
{
dict.Remove((view, id), out var v);
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
}
else
@@ -163,7 +163,7 @@ namespace ObservableCollections.Internal
if (viewMap.Remove(id, out var view))
{
dict.Remove((view, id), out var v);
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
}
}
@@ -177,7 +177,7 @@ namespace ObservableCollections.Internal
if (viewMap.Remove(oldKey, out var oldView))
{
dict.Remove((oldView, oldKey));
- filter.InvokeOnRemove(oldValue, oldView);
+ filter.InvokeOnRemove(oldValue, oldView, e);
}
var value = e.NewItem;
@@ -186,7 +186,7 @@ namespace ObservableCollections.Internal
dict.Add((view, id), (value, view));
viewMap.Add(id, view);
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnAdd(value, view, e);
}
break;
case NotifyCollectionChangedAction.Move:
@@ -196,7 +196,7 @@ namespace ObservableCollections.Internal
var key = identitySelector(value);
if (viewMap.TryGetValue(key, out var view))
{
- filter.InvokeOnMove(value, view);
+ filter.InvokeOnMove(value, view, e);
}
}
break;
@@ -205,7 +205,7 @@ namespace ObservableCollections.Internal
{
foreach (var item in dict)
{
- filter.InvokeOnRemove(item.Value);
+ filter.InvokeOnRemove(item.Value, e);
}
}
dict.Clear();
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableDictionary.Views.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableDictionary.Views.cs
index 96e6b8e..e3c63ef 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableDictionary.Views.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableDictionary.Views.cs
@@ -121,14 +121,14 @@ namespace ObservableCollections
{
var v = selector(e.NewItem);
dict.Add(e.NewItem.Key, (e.NewItem.Value, v));
- filter.InvokeOnAdd(new KeyValuePair(e.NewItem.Key, e.NewItem.Value), v);
+ filter.InvokeOnAdd(new KeyValuePair(e.NewItem.Key, e.NewItem.Value), v, e);
}
break;
case NotifyCollectionChangedAction.Remove:
{
if (dict.Remove(e.OldItem.Key, out var v))
{
- filter.InvokeOnRemove((new KeyValuePair(e.OldItem.Key, v.Item1), v.Item2));
+ filter.InvokeOnRemove((new KeyValuePair(e.OldItem.Key, v.Item1), v.Item2), e);
}
}
break;
@@ -136,12 +136,12 @@ namespace ObservableCollections
{
if (dict.Remove(e.OldItem.Key, out var oldView))
{
- filter.InvokeOnRemove((new KeyValuePair(e.OldItem.Key, oldView.Item1), oldView.Item2));
+ filter.InvokeOnRemove((new KeyValuePair(e.OldItem.Key, oldView.Item1), oldView.Item2), e);
}
var v = selector(e.NewItem);
dict[e.NewItem.Key] = (e.NewItem.Value, v);
- filter.InvokeOnAdd(new KeyValuePair(e.NewItem.Key, e.NewItem.Value), v);
+ filter.InvokeOnAdd(new KeyValuePair(e.NewItem.Key, e.NewItem.Value), v, e);
}
break;
case NotifyCollectionChangedAction.Reset:
@@ -150,7 +150,7 @@ namespace ObservableCollections
{
foreach (var item in dict)
{
- filter.InvokeOnRemove((new KeyValuePair(item.Key, item.Value.Item1), item.Value.Item2));
+ filter.InvokeOnRemove((new KeyValuePair(item.Key, item.Value.Item1), item.Value.Item2), e);
}
}
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableHashSet.Views.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableHashSet.Views.cs
index cc215b2..8b18997 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableHashSet.Views.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableHashSet.Views.cs
@@ -118,7 +118,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
dict.Add(e.NewItem, v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -126,7 +126,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
dict.Add(item, v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
break;
@@ -135,7 +135,7 @@ namespace ObservableCollections
{
if (dict.Remove(e.OldItem, out var value))
{
- filter.InvokeOnRemove(value.Item1, value.Item2);
+ filter.InvokeOnRemove(value.Item1, value.Item2, e);
}
}
else
@@ -144,7 +144,7 @@ namespace ObservableCollections
{
if (dict.Remove(item, out var value))
{
- filter.InvokeOnRemove(value.Item1, value.Item2);
+ filter.InvokeOnRemove(value.Item1, value.Item2, e);
}
}
}
@@ -154,7 +154,7 @@ namespace ObservableCollections
{
foreach (var item in dict)
{
- filter.InvokeOnRemove(item.Value);
+ filter.InvokeOnRemove(item.Value, e);
}
}
dict.Clear();
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableHashSet.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableHashSet.cs
index 328dfdb..d498ae7 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableHashSet.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableHashSet.cs
@@ -3,6 +3,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using System.Linq;
namespace ObservableCollections
{
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableList.Views.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableList.Views.cs
index 28e005c..69b832d 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableList.Views.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableList.Views.cs
@@ -136,7 +136,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
list.Add(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -144,7 +144,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
list.Add(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
}
@@ -155,7 +155,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
list.Insert(e.NewStartingIndex, v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -166,7 +166,7 @@ namespace ObservableCollections
{
var v = (span[i], selector(span[i]));
newArray[i] = v;
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
list.InsertRange(e.NewStartingIndex, newArray);
}
@@ -177,7 +177,7 @@ namespace ObservableCollections
{
var v = list[e.OldStartingIndex];
list.RemoveAt(e.OldStartingIndex);
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
else
{
@@ -185,7 +185,7 @@ namespace ObservableCollections
for (int i = e.OldStartingIndex; i < len; i++)
{
var v = list[i];
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
list.RemoveRange(e.OldStartingIndex, e.OldItems.Length);
@@ -199,8 +199,8 @@ namespace ObservableCollections
var oldItem = list[e.NewStartingIndex];
list[e.NewStartingIndex] = v;
- filter.InvokeOnRemove(oldItem);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnRemove(oldItem, e);
+ filter.InvokeOnAdd(v, e);
break;
}
case NotifyCollectionChangedAction.Move:
@@ -209,7 +209,7 @@ namespace ObservableCollections
list.RemoveAt(e.OldStartingIndex);
list.Insert(e.NewStartingIndex, removeItem);
- filter.InvokeOnMove(removeItem);
+ filter.InvokeOnMove(removeItem, e);
}
break;
case NotifyCollectionChangedAction.Reset:
@@ -217,7 +217,7 @@ namespace ObservableCollections
{
foreach (var item in list)
{
- filter.InvokeOnRemove(item);
+ filter.InvokeOnRemove(item, e);
}
}
list.Clear();
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableQueue.Views.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableQueue.Views.cs
index 0939e0a..92e4443 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableQueue.Views.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableQueue.Views.cs
@@ -134,7 +134,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
queue.Enqueue(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -142,7 +142,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
queue.Enqueue(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
break;
@@ -151,7 +151,7 @@ namespace ObservableCollections
if (e.IsSingleItem)
{
var v = queue.Dequeue();
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
else
{
@@ -159,7 +159,7 @@ namespace ObservableCollections
for (int i = 0; i < len; i++)
{
var v = queue.Dequeue();
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
}
break;
@@ -168,7 +168,7 @@ namespace ObservableCollections
{
foreach (var item in queue)
{
- filter.InvokeOnRemove(item);
+ filter.InvokeOnRemove(item, e);
}
}
queue.Clear();
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableRingBuffer.Views.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableRingBuffer.Views.cs
index af5f857..745c916 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableRingBuffer.Views.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableRingBuffer.Views.cs
@@ -141,7 +141,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
ringBuffer.AddFirst(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -149,7 +149,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
ringBuffer.AddFirst(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
}
@@ -160,7 +160,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
ringBuffer.AddLast(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -168,7 +168,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
ringBuffer.AddLast(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
}
@@ -181,14 +181,14 @@ namespace ObservableCollections
if (e.IsSingleItem)
{
var v = ringBuffer.RemoveFirst();
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
else
{
for (int i = 0; i < e.OldItems.Length; i++)
{
var v = ringBuffer.RemoveFirst();
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
}
}
@@ -198,14 +198,14 @@ namespace ObservableCollections
if (e.IsSingleItem)
{
var v = ringBuffer.RemoveLast();
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
else
{
for (int i = 0; i < e.OldItems.Length; i++)
{
var v = ringBuffer.RemoveLast();
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
}
}
@@ -215,7 +215,7 @@ namespace ObservableCollections
{
foreach (var item in ringBuffer)
{
- filter.InvokeOnRemove(item);
+ filter.InvokeOnRemove(item, e);
}
}
ringBuffer.Clear();
@@ -228,8 +228,8 @@ namespace ObservableCollections
var oldItem = ringBuffer[e.NewStartingIndex];
ringBuffer[e.NewStartingIndex] = v;
- filter.InvokeOnRemove(oldItem);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnRemove(oldItem, e);
+ filter.InvokeOnAdd(v, e);
break;
}
case NotifyCollectionChangedAction.Move:
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableStack.Views.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableStack.Views.cs
index 98157b6..9fba638 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableStack.Views.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/ObservableStack.Views.cs
@@ -134,7 +134,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
stack.Push(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -142,7 +142,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
stack.Push(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
break;
@@ -151,7 +151,7 @@ namespace ObservableCollections
if (e.IsSingleItem)
{
var v = stack.Pop();
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
else
{
@@ -159,7 +159,7 @@ namespace ObservableCollections
for (int i = 0; i < len; i++)
{
var v = stack.Pop();
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
}
break;
@@ -168,7 +168,7 @@ namespace ObservableCollections
{
foreach (var item in stack)
{
- filter.InvokeOnRemove(item);
+ filter.InvokeOnRemove(item, e);
}
}
stack.Clear();
diff --git a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/RingBuffer.cs b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/RingBuffer.cs
index 2b71878..51ce375 100644
--- a/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/RingBuffer.cs
+++ b/src/ObservableCollections.Unity/Assets/Plugins/ObservableCollections/Runtime/RingBuffer.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using System.Linq;
namespace ObservableCollections
{
diff --git a/src/ObservableCollections/ISynchronizedViewFilter.cs b/src/ObservableCollections/ISynchronizedViewFilter.cs
index ebbfe37..cd0fcfb 100644
--- a/src/ObservableCollections/ISynchronizedViewFilter.cs
+++ b/src/ObservableCollections/ISynchronizedViewFilter.cs
@@ -7,7 +7,7 @@ namespace ObservableCollections
bool IsMatch(T value, TView view);
void WhenTrue(T value, TView view);
void WhenFalse(T value, TView view);
- void OnCollectionChanged(ChangedKind changedKind, T value, TView view);
+ void OnCollectionChanged(ChangedKind changedKind, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs);
}
public enum ChangedKind
@@ -35,14 +35,14 @@ namespace ObservableCollections
public bool IsMatch(T value, TView view) => isMatch(value, view);
public void WhenFalse(T value, TView view) => whenFalse?.Invoke(value, view);
public void WhenTrue(T value, TView view) => whenTrue?.Invoke(value, view);
- public void OnCollectionChanged(ChangedKind changedKind, T value, TView view) => onCollectionChanged?.Invoke(changedKind, value, view);
+ public void OnCollectionChanged(ChangedKind changedKind, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs) => onCollectionChanged?.Invoke(changedKind, value, view);
class NullViewFilter : ISynchronizedViewFilter
{
public bool IsMatch(T value, TView view) => true;
public void WhenFalse(T value, TView view) { }
public void WhenTrue(T value, TView view) { }
- public void OnCollectionChanged(ChangedKind changedKind, T value, TView view) { }
+ public void OnCollectionChanged(ChangedKind changedKind, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs) { }
}
}
@@ -68,12 +68,12 @@ namespace ObservableCollections
return filter == SynchronizedViewFilter.Null;
}
- internal static void InvokeOnAdd(this ISynchronizedViewFilter filter, (T value, TView view) value)
+ internal static void InvokeOnAdd(this ISynchronizedViewFilter filter, (T value, TView view) value, in NotifyCollectionChangedEventArgs eventArgs)
{
- InvokeOnAdd(filter, value.value, value.view);
+ InvokeOnAdd(filter, value.value, value.view, eventArgs);
}
- internal static void InvokeOnAdd(this ISynchronizedViewFilter filter, T value, TView view)
+ internal static void InvokeOnAdd(this ISynchronizedViewFilter filter, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs)
{
if (filter.IsMatch(value, view))
{
@@ -83,27 +83,27 @@ namespace ObservableCollections
{
filter.WhenFalse(value, view);
}
- filter.OnCollectionChanged(ChangedKind.Add, value, view);
+ filter.OnCollectionChanged(ChangedKind.Add, value, view, eventArgs);
}
- internal static void InvokeOnRemove(this ISynchronizedViewFilter filter, (T value, TView view) value)
+ internal static void InvokeOnRemove(this ISynchronizedViewFilter filter, (T value, TView view) value, in NotifyCollectionChangedEventArgs eventArgs)
{
- InvokeOnRemove(filter, value.value, value.view);
+ InvokeOnRemove(filter, value.value, value.view, eventArgs);
}
- internal static void InvokeOnRemove(this ISynchronizedViewFilter filter, T value, TView view)
+ internal static void InvokeOnRemove(this ISynchronizedViewFilter filter, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs)
{
- filter.OnCollectionChanged(ChangedKind.Remove, value, view);
+ filter.OnCollectionChanged(ChangedKind.Remove, value, view, eventArgs);
}
- internal static void InvokeOnMove(this ISynchronizedViewFilter filter, (T value, TView view) value)
+ internal static void InvokeOnMove(this ISynchronizedViewFilter filter, (T value, TView view) value, in NotifyCollectionChangedEventArgs eventArgs)
{
- InvokeOnMove(filter, value.value, value.view);
+ InvokeOnMove(filter, value.value, value.view, eventArgs);
}
- internal static void InvokeOnMove(this ISynchronizedViewFilter filter, T value, TView view)
+ internal static void InvokeOnMove(this ISynchronizedViewFilter filter, T value, TView view, in NotifyCollectionChangedEventArgs eventArgs)
{
- filter.OnCollectionChanged(ChangedKind.Move, value, view);
+ filter.OnCollectionChanged(ChangedKind.Move, value, view, eventArgs);
}
internal static void InvokeOnAttach(this ISynchronizedViewFilter filter, T value, TView view)
diff --git a/src/ObservableCollections/Internal/CloneCollection.cs b/src/ObservableCollections/Internal/CloneCollection.cs
index fb72d60..7f3b5cc 100644
--- a/src/ObservableCollections/Internal/CloneCollection.cs
+++ b/src/ObservableCollections/Internal/CloneCollection.cs
@@ -3,6 +3,7 @@ using System.Buffers;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
+using System.Linq;
namespace ObservableCollections.Internal
{
diff --git a/src/ObservableCollections/Internal/SortedView.cs b/src/ObservableCollections/Internal/SortedView.cs
index 9dce18a..0411985 100644
--- a/src/ObservableCollections/Internal/SortedView.cs
+++ b/src/ObservableCollections/Internal/SortedView.cs
@@ -122,7 +122,7 @@ namespace ObservableCollections.Internal
var view = transform(value);
var id = identitySelector(value);
dict.Add((value, id), (value, view));
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnAdd(value, view, e);
}
else
{
@@ -131,7 +131,7 @@ namespace ObservableCollections.Internal
var view = transform(value);
var id = identitySelector(value);
dict.Add((value, id), (value, view));
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnAdd(value, view, e);
}
}
}
@@ -143,7 +143,7 @@ namespace ObservableCollections.Internal
var value = e.OldItem;
var id = identitySelector(value);
dict.Remove((value, id), out var v);
- filter.InvokeOnRemove(v.Value, v.View);
+ filter.InvokeOnRemove(v.Value, v.View, e);
}
else
{
@@ -151,7 +151,7 @@ namespace ObservableCollections.Internal
{
var id = identitySelector(value);
dict.Remove((value, id), out var v);
- filter.InvokeOnRemove(v.Value, v.View);
+ filter.InvokeOnRemove(v.Value, v.View, e);
}
}
}
@@ -168,8 +168,8 @@ namespace ObservableCollections.Internal
var id = identitySelector(value);
dict.Add((value, id), (value, view));
- filter.InvokeOnRemove(oldView);
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnRemove(oldView, e);
+ filter.InvokeOnAdd(value, view, e);
}
break;
case NotifyCollectionChangedAction.Move:
@@ -178,7 +178,7 @@ namespace ObservableCollections.Internal
var oldValue = e.OldItem;
if (dict.TryGetValue((oldValue, identitySelector(oldValue)), out var view))
{
- filter.InvokeOnMove(view);
+ filter.InvokeOnMove(view, e);
}
}
break;
@@ -187,7 +187,7 @@ namespace ObservableCollections.Internal
{
foreach (var item in dict)
{
- filter.InvokeOnRemove(item.Value);
+ filter.InvokeOnRemove(item.Value, e);
}
}
dict.Clear();
diff --git a/src/ObservableCollections/Internal/SortedViewViewComparer.cs b/src/ObservableCollections/Internal/SortedViewViewComparer.cs
index 3bf75b4..383c2eb 100644
--- a/src/ObservableCollections/Internal/SortedViewViewComparer.cs
+++ b/src/ObservableCollections/Internal/SortedViewViewComparer.cs
@@ -128,7 +128,7 @@ namespace ObservableCollections.Internal
var id = identitySelector(value);
dict.Add((view, id), (value, view));
viewMap.Add(id, view);
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnAdd(value, view, e);
}
else
{
@@ -138,7 +138,7 @@ namespace ObservableCollections.Internal
var id = identitySelector(value);
dict.Add((view, id), (value, view));
viewMap.Add(id, view);
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnAdd(value, view, e);
}
}
}
@@ -152,7 +152,7 @@ namespace ObservableCollections.Internal
if (viewMap.Remove(id, out var view))
{
dict.Remove((view, id), out var v);
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
}
else
@@ -163,7 +163,7 @@ namespace ObservableCollections.Internal
if (viewMap.Remove(id, out var view))
{
dict.Remove((view, id), out var v);
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
}
}
@@ -177,7 +177,7 @@ namespace ObservableCollections.Internal
if (viewMap.Remove(oldKey, out var oldView))
{
dict.Remove((oldView, oldKey));
- filter.InvokeOnRemove(oldValue, oldView);
+ filter.InvokeOnRemove(oldValue, oldView, e);
}
var value = e.NewItem;
@@ -186,7 +186,7 @@ namespace ObservableCollections.Internal
dict.Add((view, id), (value, view));
viewMap.Add(id, view);
- filter.InvokeOnAdd(value, view);
+ filter.InvokeOnAdd(value, view, e);
}
break;
case NotifyCollectionChangedAction.Move:
@@ -196,7 +196,7 @@ namespace ObservableCollections.Internal
var key = identitySelector(value);
if (viewMap.TryGetValue(key, out var view))
{
- filter.InvokeOnMove(value, view);
+ filter.InvokeOnMove(value, view, e);
}
}
break;
@@ -205,7 +205,7 @@ namespace ObservableCollections.Internal
{
foreach (var item in dict)
{
- filter.InvokeOnRemove(item.Value);
+ filter.InvokeOnRemove(item.Value, e);
}
}
dict.Clear();
diff --git a/src/ObservableCollections/ObservableDictionary.Views.cs b/src/ObservableCollections/ObservableDictionary.Views.cs
index fbeaed0..fff8918 100644
--- a/src/ObservableCollections/ObservableDictionary.Views.cs
+++ b/src/ObservableCollections/ObservableDictionary.Views.cs
@@ -121,14 +121,14 @@ namespace ObservableCollections
{
var v = selector(e.NewItem);
dict.Add(e.NewItem.Key, (e.NewItem.Value, v));
- filter.InvokeOnAdd(new KeyValuePair(e.NewItem.Key, e.NewItem.Value), v);
+ filter.InvokeOnAdd(new KeyValuePair(e.NewItem.Key, e.NewItem.Value), v, e);
}
break;
case NotifyCollectionChangedAction.Remove:
{
if (dict.Remove(e.OldItem.Key, out var v))
{
- filter.InvokeOnRemove((new KeyValuePair(e.OldItem.Key, v.Item1), v.Item2));
+ filter.InvokeOnRemove((new KeyValuePair(e.OldItem.Key, v.Item1), v.Item2), e);
}
}
break;
@@ -136,12 +136,12 @@ namespace ObservableCollections
{
if (dict.Remove(e.OldItem.Key, out var oldView))
{
- filter.InvokeOnRemove((new KeyValuePair(e.OldItem.Key, oldView.Item1), oldView.Item2));
+ filter.InvokeOnRemove((new KeyValuePair(e.OldItem.Key, oldView.Item1), oldView.Item2), e);
}
var v = selector(e.NewItem);
dict[e.NewItem.Key] = (e.NewItem.Value, v);
- filter.InvokeOnAdd(new KeyValuePair(e.NewItem.Key, e.NewItem.Value), v);
+ filter.InvokeOnAdd(new KeyValuePair(e.NewItem.Key, e.NewItem.Value), v, e);
}
break;
case NotifyCollectionChangedAction.Reset:
@@ -150,7 +150,7 @@ namespace ObservableCollections
{
foreach (var item in dict)
{
- filter.InvokeOnRemove((new KeyValuePair(item.Key, item.Value.Item1), item.Value.Item2));
+ filter.InvokeOnRemove((new KeyValuePair(item.Key, item.Value.Item1), item.Value.Item2), e);
}
}
diff --git a/src/ObservableCollections/ObservableHashSet.Views.cs b/src/ObservableCollections/ObservableHashSet.Views.cs
index c054052..f8dadbf 100644
--- a/src/ObservableCollections/ObservableHashSet.Views.cs
+++ b/src/ObservableCollections/ObservableHashSet.Views.cs
@@ -118,7 +118,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
dict.Add(e.NewItem, v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -126,7 +126,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
dict.Add(item, v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
break;
@@ -135,7 +135,7 @@ namespace ObservableCollections
{
if (dict.Remove(e.OldItem, out var value))
{
- filter.InvokeOnRemove(value.Item1, value.Item2);
+ filter.InvokeOnRemove(value.Item1, value.Item2, e);
}
}
else
@@ -144,7 +144,7 @@ namespace ObservableCollections
{
if (dict.Remove(item, out var value))
{
- filter.InvokeOnRemove(value.Item1, value.Item2);
+ filter.InvokeOnRemove(value.Item1, value.Item2, e);
}
}
}
@@ -154,7 +154,7 @@ namespace ObservableCollections
{
foreach (var item in dict)
{
- filter.InvokeOnRemove(item.Value);
+ filter.InvokeOnRemove(item.Value, e);
}
}
dict.Clear();
diff --git a/src/ObservableCollections/ObservableHashSet.cs b/src/ObservableCollections/ObservableHashSet.cs
index b409515..4734174 100644
--- a/src/ObservableCollections/ObservableHashSet.cs
+++ b/src/ObservableCollections/ObservableHashSet.cs
@@ -3,6 +3,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using System.Linq;
namespace ObservableCollections
{
diff --git a/src/ObservableCollections/ObservableList.Views.cs b/src/ObservableCollections/ObservableList.Views.cs
index 282c390..aae921f 100644
--- a/src/ObservableCollections/ObservableList.Views.cs
+++ b/src/ObservableCollections/ObservableList.Views.cs
@@ -136,7 +136,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
list.Add(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -144,7 +144,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
list.Add(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
}
@@ -155,7 +155,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
list.Insert(e.NewStartingIndex, v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -166,7 +166,7 @@ namespace ObservableCollections
{
var v = (span[i], selector(span[i]));
newArray[i] = v;
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
list.InsertRange(e.NewStartingIndex, newArray);
}
@@ -177,7 +177,7 @@ namespace ObservableCollections
{
var v = list[e.OldStartingIndex];
list.RemoveAt(e.OldStartingIndex);
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
else
{
@@ -185,7 +185,7 @@ namespace ObservableCollections
for (int i = e.OldStartingIndex; i < len; i++)
{
var v = list[i];
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
list.RemoveRange(e.OldStartingIndex, e.OldItems.Length);
@@ -199,8 +199,8 @@ namespace ObservableCollections
var oldItem = list[e.NewStartingIndex];
list[e.NewStartingIndex] = v;
- filter.InvokeOnRemove(oldItem);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnRemove(oldItem, e);
+ filter.InvokeOnAdd(v, e);
break;
}
case NotifyCollectionChangedAction.Move:
@@ -209,7 +209,7 @@ namespace ObservableCollections
list.RemoveAt(e.OldStartingIndex);
list.Insert(e.NewStartingIndex, removeItem);
- filter.InvokeOnMove(removeItem);
+ filter.InvokeOnMove(removeItem, e);
}
break;
case NotifyCollectionChangedAction.Reset:
@@ -217,7 +217,7 @@ namespace ObservableCollections
{
foreach (var item in list)
{
- filter.InvokeOnRemove(item);
+ filter.InvokeOnRemove(item, e);
}
}
list.Clear();
diff --git a/src/ObservableCollections/ObservableQueue.Views.cs b/src/ObservableCollections/ObservableQueue.Views.cs
index 31db2f8..76b245a 100644
--- a/src/ObservableCollections/ObservableQueue.Views.cs
+++ b/src/ObservableCollections/ObservableQueue.Views.cs
@@ -134,7 +134,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
queue.Enqueue(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -142,7 +142,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
queue.Enqueue(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
break;
@@ -151,7 +151,7 @@ namespace ObservableCollections
if (e.IsSingleItem)
{
var v = queue.Dequeue();
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
else
{
@@ -159,7 +159,7 @@ namespace ObservableCollections
for (int i = 0; i < len; i++)
{
var v = queue.Dequeue();
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
}
break;
@@ -168,7 +168,7 @@ namespace ObservableCollections
{
foreach (var item in queue)
{
- filter.InvokeOnRemove(item);
+ filter.InvokeOnRemove(item, e);
}
}
queue.Clear();
diff --git a/src/ObservableCollections/ObservableRingBuffer.Views.cs b/src/ObservableCollections/ObservableRingBuffer.Views.cs
index b20a7b4..987bf55 100644
--- a/src/ObservableCollections/ObservableRingBuffer.Views.cs
+++ b/src/ObservableCollections/ObservableRingBuffer.Views.cs
@@ -141,7 +141,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
ringBuffer.AddFirst(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -149,7 +149,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
ringBuffer.AddFirst(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
}
@@ -160,7 +160,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
ringBuffer.AddLast(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -168,7 +168,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
ringBuffer.AddLast(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
}
@@ -181,14 +181,14 @@ namespace ObservableCollections
if (e.IsSingleItem)
{
var v = ringBuffer.RemoveFirst();
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
else
{
for (int i = 0; i < e.OldItems.Length; i++)
{
var v = ringBuffer.RemoveFirst();
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
}
}
@@ -198,14 +198,14 @@ namespace ObservableCollections
if (e.IsSingleItem)
{
var v = ringBuffer.RemoveLast();
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
else
{
for (int i = 0; i < e.OldItems.Length; i++)
{
var v = ringBuffer.RemoveLast();
- filter.InvokeOnRemove(v);
+ filter.InvokeOnRemove(v, e);
}
}
}
@@ -215,7 +215,7 @@ namespace ObservableCollections
{
foreach (var item in ringBuffer)
{
- filter.InvokeOnRemove(item);
+ filter.InvokeOnRemove(item, e);
}
}
ringBuffer.Clear();
@@ -228,8 +228,8 @@ namespace ObservableCollections
var oldItem = ringBuffer[e.NewStartingIndex];
ringBuffer[e.NewStartingIndex] = v;
- filter.InvokeOnRemove(oldItem);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnRemove(oldItem, e);
+ filter.InvokeOnAdd(v, e);
break;
}
case NotifyCollectionChangedAction.Move:
diff --git a/src/ObservableCollections/ObservableStack.Views.cs b/src/ObservableCollections/ObservableStack.Views.cs
index 77ec33c..a4aaf79 100644
--- a/src/ObservableCollections/ObservableStack.Views.cs
+++ b/src/ObservableCollections/ObservableStack.Views.cs
@@ -134,7 +134,7 @@ namespace ObservableCollections
{
var v = (e.NewItem, selector(e.NewItem));
stack.Push(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
else
{
@@ -142,7 +142,7 @@ namespace ObservableCollections
{
var v = (item, selector(item));
stack.Push(v);
- filter.InvokeOnAdd(v);
+ filter.InvokeOnAdd(v, e);
}
}
break;
@@ -151,7 +151,7 @@ namespace ObservableCollections
if (e.IsSingleItem)
{
var v = stack.Pop();
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
else
{
@@ -159,7 +159,7 @@ namespace ObservableCollections
for (int i = 0; i < len; i++)
{
var v = stack.Pop();
- filter.InvokeOnRemove(v.Item1, v.Item2);
+ filter.InvokeOnRemove(v.Item1, v.Item2, e);
}
}
break;
@@ -168,7 +168,7 @@ namespace ObservableCollections
{
foreach (var item in stack)
{
- filter.InvokeOnRemove(item);
+ filter.InvokeOnRemove(item, e);
}
}
stack.Clear();
diff --git a/src/ObservableCollections/RingBuffer.cs b/src/ObservableCollections/RingBuffer.cs
index f8ac262..409bacc 100644
--- a/src/ObservableCollections/RingBuffer.cs
+++ b/src/ObservableCollections/RingBuffer.cs
@@ -2,6 +2,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
+using System.Linq;
namespace ObservableCollections
{
diff --git a/tests/ObservableCollections.Tests/ViewContainer.cs b/tests/ObservableCollections.Tests/ViewContainer.cs
index d6f26e3..947d689 100644
--- a/tests/ObservableCollections.Tests/ViewContainer.cs
+++ b/tests/ObservableCollections.Tests/ViewContainer.cs
@@ -54,7 +54,7 @@ namespace ObservableCollections.Tests
return this.filter.Invoke(value, view);
}
- public void OnCollectionChanged(ChangedKind changedKind, T value, ViewContainer view)
+ public void OnCollectionChanged(ChangedKind changedKind, T value, ViewContainer view, in NotifyCollectionChangedEventArgs eventArgs)
{
CalledOnCollectionChanged.Add((changedKind, value, view));
}
@@ -94,7 +94,7 @@ namespace ObservableCollections.Tests
return this.filter.Invoke(value, view);
}
- public void OnCollectionChanged(ChangedKind changedKind, KeyValuePair value, ViewContainer view)
+ public void OnCollectionChanged(ChangedKind changedKind, KeyValuePair value, ViewContainer view, in NotifyCollectionChangedEventArgs> eventArgs)
{
CalledOnCollectionChanged.Add((changedKind, value, view));
}