Browse Source

pr notes

pull/1962/head
Andrey Kunchev 8 years ago
parent
commit
5c74c49a0a
  1. 24
      src/Avalonia.Base/Utilities/MathUtilities.cs
  2. 12
      src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs

24
src/Avalonia.Base/Utilities/MathUtilities.cs

@ -1,7 +1,6 @@
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
namespace Avalonia.Utilities
{
/// <summary>
@ -31,5 +30,28 @@ namespace Avalonia.Utilities
return val;
}
}
/// <summary>
/// Clamps a value between a minimum and maximum value.
/// </summary>
/// <param name="val">The value.</param>
/// <param name="min">The minimum value.</param>
/// <param name="max">The maximum value.</param>
/// <returns>The clamped value.</returns>
public static int Clamp(int val, int min, int max)
{
if (val < min)
{
return min;
}
else if (val > max)
{
return max;
}
else
{
return val;
}
}
}
}

12
src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs

@ -418,17 +418,7 @@ namespace Avalonia.Controls.Presenters
var selector = Owner.MemberSelector;
//validate delta it should never overflow last index or generate index < 0
if (delta > 0)
{
if ((FirstIndex + delta + panel.Children.Count) > ItemCount)
{
delta = ItemCount - FirstIndex - panel.Children.Count;
}
}
else if ((FirstIndex + delta) < 0)
{
delta = -FirstIndex;
}
delta = MathUtilities.Clamp(delta, -FirstIndex, ItemCount - FirstIndex - panel.Children.Count);
var sign = delta < 0 ? -1 : 1;
var count = Math.Min(Math.Abs(delta), panel.Children.Count);

Loading…
Cancel
Save