protected internal override void GetSnappingPosition(ref float xValue, ref float yValue)
{
if (_virtual)
{
if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal)
{
float saved = yValue;
int index = GetIndexOnPos1(ref yValue, false);
if (index < _virtualItems.Count && saved - yValue > _virtualItems[index].size.y / 2 && index < _realNumItems)
yValue += _virtualItems[index].size.y + _lineGap;
}
else if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowVertical)
{
float saved = xValue;
int index = GetIndexOnPos2(ref xValue, false);
if (index < _virtualItems.Count && saved - xValue > _virtualItems[index].size.x / 2 && index < _realNumItems)
xValue += _virtualItems[index].size.x + _columnGap;
}
else
{
float saved = xValue;
int index = GetIndexOnPos3(ref xValue, false);
if (index < _virtualItems.Count && saved - xValue > _virtualItems[index].size.x / 2 && index < _realNumItems)
xValue += _virtualItems[index].size.x + _columnGap;
}
}
else
base.GetSnappingPosition(ref xValue, ref yValue);
}