Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- for (int i = index; i < max; i++)
- {
- //parallel position
- if (i < rangeEnd && i < addedCount - index)
- {
- T old = this[i],
- @new = list[i - index];
- if (comparer.Equals(old, @new))
- {
- OnRangeReplaced(i, newCluster, oldCluster);
- continue;
- }
- else
- {
- Items[i] = @new;
- newCluster.Add(@new);
- oldCluster.Add(old);
- changesMade = true;
- }
- }
- else
- {
- OnRangeReplaced(i, newCluster, oldCluster);
- //exceeding position
- var items = (List<T>)Items;
- if (rangeEnd > addedCount - index)
- {
- var removedCount = rangeEnd - addedCount;
- T[] removed = new T[removedCount];
- items.CopyTo(i, removed, 0, removed.Length);
- items.RemoveRange(i, removedCount);
- OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, removed, i));
- }
- //new position
- else
- {
- var k = i - index;
- T[] added = new T[addedCount - k];
- for (int j = k; j < addedCount; j++)
- {
- T @new = list[j];
- added[j - k] = @new;
- }
- items.InsertRange(i, added);
- OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, added, i));
- }
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement